Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Pencolor ist "picture-abhängig" (https://www.delphipraxis.net/144197-pencolor-ist-picture-abhaengig.html)

P0wder 2. Dez 2009 10:26


Pencolor ist "picture-abhängig"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hey Leuts...

Als Erstes mal: Ein super Forum habt ihr hier. Konnte schon echt viel profitieren.
Doch nun hab ich eine Frage, auf die ich bis jetzt keine Antwort gefunden habe.

Okey folgendes Problem:
Ich lade ein Bild in ein TImage. Anschliessend möchte ich über dieses Bild diverse Figuren(Polygon, Kreis, Rechteck) zeichnen. Jede Figur erhält seine eigene Farbe. Soweit so gut. Klappt auch alles, sofern das Bild weiss ist. Wenn aber die Farbe des Bildes ändert verändert sich auch die Farbe der Figuren bis sie schliesslich bei schwarzem Hintergrund in den Komplementärfarben gezeichnet werden. So kann es z.B. sein, dass ein Kreis der sowohl auf Weiss wie auch auf Schwarz gezeichnet wird, Blau/Gelb erscheint. Im Anhang findet ihr ein Screenshot, der das Problem veranschaulichen soll.

Nun meine Frage: Wie erreiche ich, dass die Farbe der Figuren, egal bei welchem Hintergrundbild, die gleiche Farbe behalten?

Greez & thx

P0wder

himitsu 2. Dez 2009 10:39

Re: Pencolor ist "picture-abhängig"
 
Schau dir mal Pen.Mode an,
dieses bestimmt, ob/wie die zu zeichnenden Farben mit dem Bild verrechnet werden sollen.

P0wder 2. Dez 2009 11:06

Re: Pencolor ist "picture-abhängig"
 
Hab ich bereits. Der Mode muss auf pmNotXor stehen, da ich eine "Gummilinie" haben will. Also bei einem ersten Klick wird ein Punkt der linie gesetzt und der zweite Punkt wird am Cursor "angehängt". Kennt man z.B. von Paint.

himitsu 2. Dez 2009 11:41

Re: Pencolor ist "picture-abhängig"
 
tja, und genau dieses verrechnet die Werte, so daß es später möglich sit die Originalfarb wiederherzustellen und diese Rechnung verändert nunmal die Farbe, denn pmNotXor ist

Delphi-Quellcode:
PixelFarbe_im_Bild := PixelFarbe_im_Bild xor not Pen.Color;
Es wird also immer eine Farbänderung geben und du kannst nur über .Mode und .Color bestimmen wie diese Änderung aussieht.


Wenn du nur genau mit einer bestimmten arbe zeichnen willst, dann bleibt dir nur ein Weg
- das Originalbild vorher speichern oder jedesmal neu Zeichnen
- dann darüber deinen Stich zeichnen
- und bei jeder Änderung das Originalbild wiederherstellen und eventuell einen neuen Stich draufzeichnen

P0wder 2. Dez 2009 11:49

Re: Pencolor ist "picture-abhängig"
 
Hmm.. hab ich mir noch fast gedacht :?.. Und es gibt echt keinen Mode, der die "Gummilinie" sowie eine unveränderliche Farbe ermöglicht? Komisch -.-.. Bin doch bestimmt nicht der Erste, der sowas möchte :S

Danke auf jeden Fall für deine Hilfe :thumb:

himitsu 2. Dez 2009 11:56

Re: Pencolor ist "picture-abhängig"
 
Nein, sowas kann es nicht geben, da ja irgendwo die Information über die Originalfarbe gespeichert werden muß und diese wir hier praktisch in die jeweiligen Pixel eincodiert (darum die Farbänderung).

Es gibt natürlich Modi, welche eine Linie farbunveränderlich zeichnen,
aber diese lassen sich nicht für diese Gumilinien verwenden, da sie sich nicht rückgängig machen lassen.

In soeinem Fall mußt du eben die Farbinformation extern speichern.
z.B. in Form einer Bildkopie.

Neutral General 2. Dez 2009 12:01

Re: Pencolor ist "picture-abhängig"
 
Hi,

Du könntest den Auswahlkasten auch auf einem weißen, transparenten Bitmap malen, welches über dem richtigen Bild liegt.

Gruß
Neutral General


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