![]() |
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 |
Re: Linie aus einzelnen Pixeln zeichnen
Ein Hallöle von
![]() Von [X1, Y1] zu [X2, Y2]:
Code:
http://www.delphipraxis.net/images/common/divider.jpg
[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]; ![]() ![]() ![]() |
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:
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.
laenge:=round(sqrt(sqr(x1-x2)+sqr(y1-y2)));
Grüße Seniman |
Re: Linie aus einzelnen Pixeln zeichnen
Thank you, guys! :lol:
Gruß Yheeky |
Re: Linie aus einzelnen Pixeln zeichnen
Willkommen beim Bresenham-Algorithmus.
Such mal nach "Bresenham Pascal" auf Google und du wirst finden. |
Re: Linie aus einzelnen Pixeln zeichnen
Oder per Windows API einfach "LineDDA()" nutzen.
Gruß Hagen |
Re: Linie aus einzelnen Pixeln zeichnen
Ja, aber da lernt er nicht so viel dabei. :-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz