Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi transparentes Image über Image legen ?! (https://www.delphipraxis.net/66264-transparentes-image-ueber-image-legen.html)

moelski 27. Mär 2006 15:38


transparentes Image über Image legen ?!
 
Moin !

Ok, die Frage scheint vielleicht etwas verwirrend. Ich versuche es mal zu erklären ...

Ich bastele gerade an einem GPS Proggy. Nun möchte ich gerne Rasterkarten kalibrieren, um sie mit den GPS Daten übereinanderlegen zu können. Aber beim Kalibrieren der Karten habe ich ein Prob ...

Und zwar habe ich ein Image, in das ich eine Karte lade. Soweit so gut. Nun möchte ich Referenzpunkte setzen. Wenn der Benutzer dann in die Karte klickt, dann soll an der Stelle ein kleines Kruez oder sowas erscheinen.
Und eben das bekomme ich nicht hin. Auf das Image kann ich nicht zeichnen. Da kriege ich eine Fehlermeldung das kein Bild geladen wäre oder sowas in der Art. Und prinzipiell wäre das auch keine gute Lösung.
Was ich nun brauche ist folgendes ... Ich müsste auf mein Image ein weiteres Image / PaintBox / was auch immer legen, und darein mein Kreuz zeichnen. Nun müsste aber das ganze Transparent sein. Man darf also in der Karte nur das Kreuz sehen.
Hat jemand einen Tip wie ich das am besten lösen kann?

chaosben 28. Mär 2006 05:44

Re: transparentes Image über Image legen ?!
 
Was hältst du davon:
Halte dir deine rohe Karte (besser gesagt den aktuellen Ausschnitt) im Programm in einer Variable vom Typ TBitmap (oder als irgendein anderes Format). Auf dein Form legst du dir eine Paintbox deren OnPaint-Ereignis du bedienst. In dem Moment, wo ein OnPaint nötig wird, lässt du eine Funktion losrennen, die eine Kopie von deinem Bitmap anlegt, alle nötigen Kreuze Punkte Wege, Kirchen ;) usw. einzeichnet und die bemalte Kopie per BitBlt in die PaintBox zeichnet.
Und auf diese Weise hast du gleich auch eine DoubleBufferd-Technologie in dein Programm gebracht, die das Ganze optisch schön macht. :)
Falls du das so machst, dann ruf zum neu zeichnen nicht die PaintBox.Invalidate/Repaint-Methode auf, denn diese löscht das Bild erst und dann wird es neu gezeichnet. Das bringt bei schnellen Bildwechseln ein unschönes Flackern.


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