![]() |
Bitmap invertieren
Werte Gemeinde!
Ich versuche gerade ein Bitmap zu invertieren -- das klappt aber nur teilweise: d.h. schwarze Linien werden nicht weiss dargestellt, hingegen schwarzer Text schon, merkwürdig nicht wahr?!
Delphi-Quellcode:
Danach sehe ich ein komplett schwarzes Rechteck -- in der Mitte den weissen Text 'Hallo Hallo...' -- wo aber ist die weisse Linie?
Brush.Color := ClBlack;
Pen.Color := ClBlack; PolyLine([Point(300, 300), Point(500, 300)]); Brush.Color := ClWhite; // Schwarzer Text auf weissem Grund TextOut(350,280, 'Hallo Hallo Hallo Hallo'); InvertRect(BMP.Canvas.Handle, BMP.Canvas.ClipRect); BMP.Assign(BMP); Zum testen sehe ich mir vor der Invertierei die BMP an: Weisser Hintergrund, schwarze Linie quer durch, mit schwarzem Text. Soweit also ok. Dass die Invertierungsroutine ok ist, denke ich, sieht man an dem anschließendem schwarzem Rechteck und den weissem Text. Aber alle Linien, oder Kreise u.ä. die ich zeichne, werden nicht invertiert. Was läuft da falsch? Vielen Dank für alle Hinweise/Tipps! Gruß Jazzman |
Re: Bitmap invertieren
Zitat:
Nix. Also, wie sieht nun dein InvertRect aus? |
Re: Bitmap invertieren
Zitat:
InvertRect ist eine GDI-Routine:
Delphi-Quellcode:
Das ist mein InvertRect.
OH:
InvertRect The InvertRect function inverts a rectangle in a window by performing a logical NOT operation on the color values for each pixel in the rectangle's interior. BOOL InvertRect( HDC hDC, // handle to DC CONST RECT *lprc // rectangle ); Gruß Jazzman |
Re: Bitmap invertieren
Also in JAVA gehe ich das Bild (Bitmap in dem Falle)
Zeile für Zeile durch und invertiere, jenachdem welche Farbe das ist. |
Re: Bitmap invertieren
Prüf mal, ob BMP.Canvas.ClipRect überhaupt das gesamte Bild umfaßt.
|
Re: Bitmap invertieren
Kannst du uns mal den originalen Quellcode zeigen? Denn der aus dem ersten Beitrag ist so sehr zusammen gekürzt das man auch eine Glaskugel nehmen könnte um den Fehler zu finden :glaskugel:
|
Re: Bitmap invertieren
Entwarnung!
Ich hatte Tomaten auf den Augen -- das Invertieren klappt prima (mit InvertRect-GDI). Das Problem war (ich wage es kaum zu sagen :stupid: ): Das zu invertierende BMP hat Weiss als Transparenzfarbe. Da ich nun das invertierete BMP auf einem anderen BMP (teils schwarz) liegen habe, habe ich schlicht einfach nicht gesehen, dass korrekt invertiert worden war und alls was weiss werden sollte nun transparent ist und nun schlicht und einfach, das darunterliegende BMP zeigte. Das was ich als weissen Text inerpretierte war auch nur der darunterliegende Text. Das passiert nun mal, wenn man mit einigen BMPs herumjongliert. Wenn es interessiert: Ich verschiebe einen kleinen autonomen Roboter (BMP1) über eine Test-Strecke(BMP2). Der Roboter reagiert auf seine Abstandssensoren -- mit der obigen Geschichte prüfe ich nur, ob der Roboter nicht eine Wand durchfährt (auch wenn die Sensoren das verhindern sollen, passiert dies nun mal). Also, vielen Dank für eure Hinweise und Kommentare -- aber manchmal steht man sich einfach selber im Weg und ein neuer Tag öffnet dann die Augen. Gruße an Alle Jazzman |
Re: Bitmap invertieren
|
Re: Bitmap invertieren
Zitat:
Auf "InvertColor in Bitmap"? Genau so mache ich es ja. (Wie gesagt, ich hatte Tomaten auf den Augen). Gruß Jazzman |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:33 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