AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Paintbox - Gezeichnete Linie löschen

Ein Thema von oli_a · begonnen am 14. Jan 2009 · letzter Beitrag vom 14. Jan 2009
Antwort Antwort
oli_a

Registriert seit: 10. Jul 2008
29 Beiträge
 
#1

Paintbox - Gezeichnete Linie löschen

  Alt 14. Jan 2009, 12:58
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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Paintbox - Gezeichnete Linie löschen

  Alt 14. Jan 2009, 13:02
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.
$2B or not $2B
  Mit Zitat antworten Zitat
tomsson74

Registriert seit: 8. Jan 2008
73 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Paintbox - Gezeichnete Linie löschen

  Alt 14. Jan 2009, 13:03
Du könntest Deine Linien mit

Pen.Mode := pmNot zeichnen. Beim ersten mal wird die Farbe invertiert, wenn Du nochmal drüber zeichnest werden die farben wieder "normal".

Ansonsten fällt mir noch das Stichwort "XOR" ein.

Grüße
Thomas
  Mit Zitat antworten Zitat
oli_a

Registriert seit: 10. Jul 2008
29 Beiträge
 
#4

Re: Paintbox - Gezeichnete Linie löschen

  Alt 14. Jan 2009, 13:14
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.476 Beiträge
 
Delphi 12 Athens
 
#5

Re: Paintbox - Gezeichnete Linie löschen

  Alt 14. Jan 2009, 13:20
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.
Uwe Raabe
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Paintbox - Gezeichnete Linie löschen

  Alt 14. Jan 2009, 13:27
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.
  Mit Zitat antworten Zitat
oli_a

Registriert seit: 10. Jul 2008
29 Beiträge
 
#7

Re: Paintbox - Gezeichnete Linie löschen

  Alt 14. Jan 2009, 15:04
oh, vielen Dank. Darüber werd ich mich erstmal genauer informieren müssen. (Programmier Anfänger)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:42 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