Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools > Dlls, Includes, Units & Prozeduren

Dlls, Includes, Units & Prozeduren Alles zu den Themen Dlls, Includes, Units & Prozeduren

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26644, Antworten: 4197
Gehe zum ersten neuen Beitrag [Windows XP-32 bit] Verschlüsselungs Trojaner
Aufrufe: 59, Antworten: 2
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 71, Antworten: 6
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7537, Antworten: 175
Gehe zum ersten neuen Beitrag Gibts denn nichts neues?
Aufrufe: 863, Antworten: 46
Gehe zum ersten neuen Beitrag Rechner fährt herunter,...
Aufrufe: 99, Antworten: 5
PPF - Shoppingwahn
Aufrufe: 50864, Antworten: 1390
Gehe zum ersten neuen Beitrag Windows Oberfläche (Schrift,...
Aufrufe: 180, Antworten: 10
Gehe zum ersten neuen Beitrag TabCtrl
Aufrufe: 125, Antworten: 12
Gehe zum ersten neuen Beitrag Dateien lassen sich nicht...
Aufrufe: 25, Antworten: 2
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23.08.2009, 21:55   #1 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.091
Standard Bresenham-Algorhythmus

Linien selber berechnen, Pixel für Pixel.

Code:
'
' Bresenham-Algorhythmus in XProfan
' (c) Frank Abbing für http://www.paules-pc-forum.de/forum/xprofan/
'

Declare grid&

'
' SYNTAX:
' Bresenham(Farbe (RGB), Startpunkt links (in Pixel), Startpunkt oben, Endpunkt rechts, Endpunkt unten)
'
' ________________________________________________________________________________________________________________
  Proc Bresenham
' ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  Parameters col&,x1&,y1&,x2&,y2&

    Declare x&,y&,z&,a&,b&,d&,dx&,dy&,dp&,dq&
    dx&=@abs(x2&-x1&)
    dy&=@abs(y2&-y1&)

    If ((dx&<>0) AND (dy&<>0))
      If ((dy&<dx&) OR (dy&=dx&))
        x&=x1&
        y&=y1&
        z&=x2&
        If (x1&<x2&) OR (x1&=x2&)
          a&=1
          Else
          a&=-1
        EndIf
        If (y1&<y2&) OR (y1&=y2&)
          b&=1
          Else
          b&=-1
        EndIf
        dp&=dy&+dy&
        d&=dp&-dx&
        dq&=dp&-(dx&+dx&)

        SetPixel x&,y&,col&
        AddString(grid&,Str$(x&)+"|"+Str$(y&))

        While (x&<>z&)
          x&=x&+a&
          If d&<0
            d&=d&+dp&
            Else
            y&=y&+b&
            d&=d&+dq&
          EndIf
          SetPixel x&,y&,col&
          AddString(grid&,Str$(x&)+"|"+Str$(y&))
        EndWhile

        Else
        y&=y1&
        x&=x1&
        z&=y2&
        If (y1&<y2&) OR (y1&=y2&)
          a&=1
          Else
          a&=-1
        EndIf
        If (x1&<x2&) OR (x1&=x2&)
          b&=1
          Else
          b&=-1
        EndIf
        dp&=dx&+dx&
        d&=dp&-dy&
        dq&=dp&-(dy&+dy&)
        SetPixel x&,y&,col&
        AddString(grid&,Str$(x&)+"|"+Str$(y&))

        While y&<>z&
          y&=y&+a&
          If d&<0
            d&=d&+dp&
            Else
            x&=x&+b&
            d&=d&+dq&
          EndIf
          SetPixel x&,y&,col&
          AddString(grid&,Str$(x&)+"|"+Str$(y&))
        EndWhile
      EndIf
    EndIf

    If ((dx&=0) OR (dy&=0))
      If ((dx&=0) AND (dy&<>0))                   'achsenparallel x
        x&=x1&
        y&=y1&
        z&=y2&
        If (y1&<y2&) OR (y1&=y2&)
          b&=1
          Else
          b&=-1
        EndIf
        SetPixel x&,y&,col&
        AddString(grid&,Str$(x&)+"|"+Str$(y&))

        While y&<>z&
          y&=y&+b&
          SetPixel x&,y&,col&
          AddString(grid&,Str$(x&)+"|"+Str$(y&))
        EndWhile

        Else
        If ((dx&<>0) AND (dy&=0))                  'achsenparallel y
          x&=x1&
          y&=y1&
          z&=x2&
          If (x1&<x2&) OR (x1&=x2&)
            a&=1
            Else
            a&=-1
          EndIf
          SetPixel x&,y&,col&
          AddString(grid&,Str$(x&)+"|"+Str$(y&))

          While x&<>z&
            x&=x&+a&
            SetPixel x&,y&,col&
            AddString(grid&,Str$(x&)+"|"+Str$(y&))
          EndWhile
        EndIf
      EndIf
    EndIf

    x1&=x&
    y1&=y&

  Endproc


Cls
Randomize

grid&=Create("GridBox", %hwnd, "X-Achse;1;56;Y-Achse;1;56", 2, 8, 8, 136, 408)

Whileloop 20
  Bresenham(RGB(Rnd(255),Rnd(255),Rnd(255)), Rnd(490)+150,Rnd(400), Rnd(490)+150,Rnd(400))
EndWhile

While 1

  WaitInput
  Case %key=2:Break

Endwhile

End
EDIT//: Offtopics wurden verschoben nach: Copyright auf Quellcodes
__________________
Gruß, Frank


Webpage http://frabbing.bplaced.net
mit Freeware - Tools, Spiele und Grafiken.

Geändert von Frabbing (24.08.2009 um 19:38 Uhr)
Frabbing ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > XProfan > Helfer & Tools > Dlls, Includes, Units & Prozeduren

Lesezeichen

Stichworte
berechnen, bresenham, linie, linien, malen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an




Alle Zeitangaben in WEZ +2. Es ist jetzt 09:54 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2