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/)
-   -   Pixel unter einer Geraden wiederherstellen (https://www.delphipraxis.net/166181-pixel-unter-einer-geraden-wiederherstellen.html)

idefix2 1. Feb 2012 22:35

Pixel unter einer Geraden wiederherstellen
 
Hallo,

Ich habe jetzt folgendes problem beim Bearbeiten meines Bildes:
Es ist ja ganz einfach, mittels moveto und lineto einen geraden Strich über ein Bild drüber zu zeichnen.

Aber: Gibt es eine einfache Möglichkeit, die Pixeldaten unter diesem Strich vorher zu sichern, damit man den Strich nachher wieder wegnehmen kann und das ursprüngliche Bild wieder da ist?

himitsu 1. Feb 2012 22:41

AW: Pixel unter einer Geraden wiederherstellen
 
Ja, kopier dir vorher den Teil unter der Linie oder das ganze Bild in ein anderes Bild (z.B. TBitMap).

Oder übermale den Punkt nicht einfach nur.
Zeichne die Linie z.B. mit PenMode pmXor oder pmNotXor, denn zweimal XOR = nichts.
Wird das gezeichnete nochmals gezeichnet, hebt es sich gegenseitig auf. :angle:

PS: So wird z.B. auch der Auswahlrahmen gezeichnen, womit man im FormDesigner die/mehrere Komponenten auswählen kann.

idefix2 2. Feb 2012 01:26

AW: Pixel unter einer Geraden wiederherstellen
 
Penmode pmxor - das könnte klappen.
Das ganze Bild möchte ich nicht sichern, und ausrechnen, welche Pixel von einer schrägen Geraden genau verdeckt werden und genau die sichern und nachher wiederherstellen, könnte recht aufwändig werden.

Furtbichler 2. Feb 2012 07:36

AW: Pixel unter einer Geraden wiederherstellen
 
Nun ja, es ist das Rechteck zwischen dem Anfangs- und Endpunkt der Geraden. Da Du keinen Zugriff auf den exakten Algorithmus zum Zeichnen der Linie hast, wirst Du die einzelnen Pixel eh nicht kennen.

XOR ist aber gang und gäbe. Netter Nebeneffekt: Die Linie ist fast immer sichtbar, d.h. Du musst Dir über die Farbe keine Gedanken machen: Ausnahme: Mittelgrau.

BUG 2. Feb 2012 10:54

AW: Pixel unter einer Geraden wiederherstellen
 
Ansonsten kann man das Bild und die Linien zusätzlich speichern und nur neu in ein Ausgabebild rendern, wenn eine Linie entfernt wird. Insbesondere bei wenig zu zeichnende Linien sollte das gut funktionieren.
Ein nicht zu unterschätzender Vorteil: Es können leicht auch andere Formen/Farben/Transparents/usw. unterstützt werden.


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