Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Linie aus einzelnen Pixeln zeichnen (https://www.delphipraxis.net/12762-linie-aus-einzelnen-pixeln-zeichnen.html)

Yheeky 3. Dez 2003 19:12


Linie aus einzelnen Pixeln zeichnen
 
Hi,

ich habe folgendes Problem:
Ich habe 2 X- und Y-Punkte könnte jetzt einfach mit LineTo eine Linie zeichnen. Ich muss jedoch ein Objekt entlang dieser (noch imaginären) Linie bewegen. Aus diesem Grund möchte ich die Linie erstmal aus einzelnen Pixeln zeichnen, da ich ja später für die Bewegung des Objektes auch immer X- und Y-Position benötige. Wie könnte ich das realisieren?

Gruß Yheeky

himitsu 3. Dez 2003 19:34

Re: Linie aus einzelnen Pixeln zeichnen
 
Ein Hallöle von http://www.FrankNStein.de/Smiley-Wolke.gif,

Von [X1, Y1] zu [X2, Y2]:

Code:
[b]Var[/b] X1, Y1, X2, Y2: Integer;


[b]Var[/b] X, Y: Integer;

[b]For[/b] I := 0 [b]to[/b] [color=red]100[/color] [b]do Begin[/b]
  X := X1 + ((X2 - X1) * I [b]div[/b] [color=red]100[/color]);
  Y := Y1 + ((Y2 - Y1) * I [b]div[/b] [color=red]100[/color]);
  Canvas.Pixels[X, Y] := clRed;
[b]End[/b];
http://www.delphipraxis.net/images/common/divider.jpg
http://www.FrankNStein.de/Smiley-Kuss.gif * * http://www.FrankNStein.de/Smiley-Spinne.gif * * * http://www.FrankNStein.de/Smiley-Winken.gif

Seniman 3. Dez 2003 20:07

Re: Linie aus einzelnen Pixeln zeichnen
 
Hallo,

ich würde vorschlagen, statt des wertes 100, wie in himitsus code, die Länge der Linie zu benutzen. Die berechnet sich nach Pythagoras:
Delphi-Quellcode:
laenge:=round(sqrt(sqr(x1-x2)+sqr(y1-y2)));
Das hat den Vorteil, dass die Linie, die du zeichnest, immer eine Linie ist und keine Löcher bekommt, wenn sie länger wird. Außerdem wird sich die Figur dann immer mit gleicher Geschwindigkeit bewegen.

Grüße
Seniman

Yheeky 3. Dez 2003 20:55

Re: Linie aus einzelnen Pixeln zeichnen
 
Thank you, guys! :lol:

Gruß Yheeky

Robert Marquardt 4. Dez 2003 06:07

Re: Linie aus einzelnen Pixeln zeichnen
 
Willkommen beim Bresenham-Algorithmus.
Such mal nach "Bresenham Pascal" auf Google und du wirst finden.

negaH 4. Dez 2003 06:31

Re: Linie aus einzelnen Pixeln zeichnen
 
Oder per Windows API einfach "LineDDA()" nutzen.

Gruß Hagen

Robert Marquardt 4. Dez 2003 09:38

Re: Linie aus einzelnen Pixeln zeichnen
 
Ja, aber da lernt er nicht so viel dabei. :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz