Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Punkte verbinden -> Linie löschen (https://www.delphipraxis.net/67140-punkte-verbinden-linie-loeschen.html)

hirnstroem 10. Apr 2006 09:54


Punkte verbinden -> Linie löschen
 
'loha Folks,

zwei Punkte werden miteinander wie folgt verbunden:

Delphi-Quellcode:
with img_3d_verbindung do
begin
  Canvas.FillRect(ClientRect);
  Canvas.MoveTo(img_door_l.Top, (img_door_l.Left + img_door_l.Width)); //Startpunkt der Linie
  Canvas.LineTo (shp_3d_vertical.Left, shp_3d_vertical.Top); //Endpunkt der Linie
  Canvas.Pen.Width := 1;
  Canvas.Brush.Style := bsClear;
  Canvas.Pen.Color := clRed;
end;
Nun habe ich das Problem, dass das oben genannte Ereignis relativ viele male durchlaufen wird und mir immer mehr Linien auf das Formular gezeichnet werden. Leider finde ich keine Möglichkeit, nur diejenige Linie anzuzeigen, welche momentan auch wirklich gebraucht wird.

Hat jemand eine Idee, wie die jeweils letzte Linie ausradiert werden könnte?

Grüsse
hirnstroem

Nikolas 10. Apr 2006 10:02

Re: Punkte verbinden -> Linie löschen
 
Du könntest einfach mit weiss drüber malen?
Alternativ stellst du den Penmode auf PmXor. Wenn du dann eine Linie malst, wird der Hintergrund mit der Stiftfarbe per Xor verrechnet. D.h., wenn du die Linie mit den gleichen Einstellungen noch mal zeichnest, verschwindindet sie wieder.

Hawkeye219 10. Apr 2006 20:39

Re: Punkte verbinden -> Linie löschen
 
Du solltest vor dem Füllen die Füllfarbe setzen und das Füllmuster auf bsSolid stellen:

Delphi-Quellcode:
with img_3d_verbindung do
begin
  Canvas.Brush.Color := clWhite; // <<--- hier!
  Canvas.Brush.Style := bsSolid; // <<--- hier!
  Canvas.FillRect(ClientRect);
  Canvas.MoveTo(img_door_l.Top, (img_door_l.Left + img_door_l.Width)); //Startpunkt der Linie
  Canvas.LineTo (shp_3d_vertical.Left, shp_3d_vertical.Top); //Endpunkt der Linie
  Canvas.Pen.Width := 1;
  Canvas.Brush.Style := bsClear;
  Canvas.Pen.Color := clRed;
end;
Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:46 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