![]() |
Transparent zeichnen
Tach, Leute!
Ich möchte ein Bild auf 'nem HDC Transparent (ohne Hintergrundfarbe) ausgeben.
Delphi-Quellcode:
Das klappt nicht, mein Bitmap wird überhaupt nicht ausgegeben. Mache ich etwas falsch ? Oder soll ich TrasparentBlt (oder so ähnlich) verwenden ? Damit hatte ich auch meine Schwierigkeiten.
var
Bitm:TBitmap; procedure DrawTo(DC:HDC); var B:TBitmap; MyMask:HBITMAP; begin B:=TBitmap.Create; B.Width:=Bitm.Width; B.Height:=Bitm.Height; B.Canvas.Draw(0,0,Bitm); B.Mask(0); MyMask:=B.MaskHandle; // BitBlt(DC,Left,Top,Width,Height,Bitm.Canvas.Handle,0,0,SrcCopy); // bisher MaskBlt(DC,Left,Top,Width,Height,Bitm.Canvas.Handle,0,0, MyMask,0,0,SrcCopy); B.Free; end; Gibt es eine einfache Lösung meines Problems ? |
Re: Transparent zeichnen
wo ist Left, Top, Height, Width definiert?
Und bist du dir sicher das Bitm ein Monchrom Bitmap ist mit der richtigen Maske? Irgendwie ist dein Source etwas undurchsichtig mit der Mischung aus globalen etc. |
Re: Transparent zeichnen
Zitat:
Zitat:
B (:TBitmap) erstelle ich hier, weil ich auch mein Bitmap nach der Methode Mask mit BitBlt ausgegeben habe. Auch das Bitmap war monochrom (warum auch immer). Um die Grafik also in meinem Bitmap zu sichern musste ich eine Kopie davon erstellen. Aber das mit dem "undurchsichtig" versteh' ich nicht. :gruebel: P.S.: ich bin auch für andere Lösungen (mit Verwendung der API-Funktionen) offen. |
Re: Transparent zeichnen
Schau doch mal
![]() |
Re: Transparent zeichnen
@turboPASCAL: Das geht zwar, ist mir aber zu viel Code. Das verlangsamt die Ausführung meiner Spiele (wofür ich dieses 'transparent Zeichnen' brauche).
Man kann aber auch mit DrawIcon() transparent zeichnen. Allerdings hat das 2 Nachteile: weniger Farben und das Icon wird immer auf die Größe 32x32 gestreckt/gestaucht. Über die Farben könnte ich ja noch hinwegsehen aber das mit der Größe ist wirklich nicht schön. Weiß jemand wie man das abstellen kann ? |
Re: Transparent zeichnen
Nochmal Dumm gefragt: Warum kein Bitmap + Transparentz ?
Delphi-Quellcode:
Bitmap.TransparentMode := tmFixed;
Bitmap.TransparentColor := clFuchsia; Bitmap.Transparent := True; Bitmap.Canvas.Draw(X, Y, WasAuchImmer.Grafik); |
Re: Transparent zeichnen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 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