![]() |
Paintbox - Gezeichnete Linie löschen
Hallo,
in meinem Programm, zeichne ich mit Hilfe der Paintbox ein in TImage geladenes Bild ab. Mit jedem Mausklick, werden die Punkte mit Hilfe von LineTo verbunden und die Koordinaten der Punkte abgespeichert. Ich würde gern realisieren, dass wenn sich jemand "verzeichnet", man die zu letzt gezeichnete Line mit einem Mausrechtsklick oder ähnlichem wieder löschen kann. Hat jemand eine Idee, wie ich die bewerkstelligene könnte? gruß oli |
Re: Paintbox - Gezeichnete Linie löschen
da mußt du einfach nur die letze Linie, mit der Hintergrundfarbe übermalen.
oder besser noch, wenn du die Punkte gespeichert hast, dann alles löschen und alle Linien neu malen, welche vor der letzen Linie erstellt wurden. |
Re: Paintbox - Gezeichnete Linie löschen
Du könntest Deine Linien mit
Delphi-Quellcode:
zeichnen. Beim ersten mal wird die Farbe invertiert, wenn Du nochmal drüber zeichnest werden die farben wieder "normal".
Pen.Mode := pmNot
Ansonsten fällt mir noch das Stichwort "XOR" ein. Grüße Thomas |
Re: Paintbox - Gezeichnete Linie löschen
Also der Paintbox ist wie gesagt ein TImage unterlegt. Mit Hintergrundfarbe übermalen geht daher nicht.
Ich denke, ich werde es wohl mit "alles löschen" und "neumalen" versuchen. und auch Pen.Mode := pmNot werd ich mir mal anschauen. Danke für die Antworten. |
Re: Paintbox - Gezeichnete Linie löschen
Normalerweise wird in eine Paintbox im OnPaint-Event gezeichnet. Dieser wird immer dann aufgerufen, wenn die Paintbox neu gezeichnet werdn muss (z.B. wenn das Formular minimiert oder von einem anderen Fenster überdeckt war.
Insofern solltest du dir die Punkte der Linien in einer Liste merken (wenn du das nicht schon direkt tust) und diese Liste im OnPaint abarbeiten. Bei jeder Änderung der Liste rufst du dann ein PaintBox.Invalidate auf, damit diese auch neu gemalt wird. Ein Löschen des letzten Punktes geht dann ganz einfach durch Löschen des letzten Elementes der Liste. |
Re: Paintbox - Gezeichnete Linie löschen
Ich würde das in verschiedenen Schichten realisieren.
1.) Anwender klickt auf TImage / TPaintbox -> X/Y-Pos werden in eine Liste gespeichert. 2.) In einem temp. Bitmap wird anhand der Liste die Linie generiert. 3.) Das temp. Bitmap wird mit Assign dem TImage / TPaintbox zugewiesen. Somit hast du immer ein "Puffer", in dem du zeichnest und der nur auf dem jeweiligen Image ausgegeben wird. Damit weißt du auch immer, welche Linien zu zeichnen sind und welche nicht. Weiterhin lassen sich damit noch einige andere Sachen realisieren (Verschieben, Drehen, ...). EVA-Prinzip halt. :P |
Re: Paintbox - Gezeichnete Linie löschen
oh, vielen Dank. Darüber werd ich mich erstmal genauer informieren müssen. (Programmier Anfänger)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 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