Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi TBitmap32 mit Alphatransparenz auf TCanvas zeichnen (https://www.delphipraxis.net/74859-tbitmap32-mit-alphatransparenz-auf-tcanvas-zeichnen.html)

Delphi-Freak 9. Aug 2006 19:39


TBitmap32 mit Alphatransparenz auf TCanvas zeichnen
 
Hi!
Ich denke der Titel sagt eh schon alles. Wäre es vlt. eine Möglichkeit, ein TBitmap32 an das Canvas "anzuhängen" - wie würde das gehen?
Ich habe schon sau viel in der DP gesucht, aber eben nichts gefunden - sonst würde ich ja nicht schreiben (außer ich wäre eine Art Sadist). :mrgreen:

LG, ich

CK_CK 9. Aug 2006 19:44

Re: TBitmap32 mit Alphatransparenz auf TCanvas zeichnen
 
Hast du dich schon über die Layer-Funktion der Image32-Komponente erkundigt (die Layer-Beispiele angeguckt)?
Das dürfte genau das sein, was du willst...

Delphi-Freak 9. Aug 2006 19:50

Re: TBitmap32 mit Alphatransparenz auf TCanvas zeichnen
 
Aber da wird doch nur ein TBitmap32 auf ein anderes TBitmap32 gezeichnet. Das ist mir schon klar, wie das geht, man muss eben DrawMode auf dmBlend und CombineMode auf cmBlend setzen. Nur das funktioniert eben nicht, wenn man bei DrawTo anstatt eines anderen TBitmap32 ein HDC angibt.
Trotzdem mal danke!

LG, ich

CK_CK 9. Aug 2006 19:53

Re: TBitmap32 mit Alphatransparenz auf TCanvas zeichnen
 
Was ist denn deine "Quelle"? Eine Datei, ein Stream, etc.?

HDC? Warum erzeugst du nicht ein temporäres Bitmap und kopierst das dann in ein Bitmap32?

Delphi-Freak 9. Aug 2006 19:58

Re: TBitmap32 mit Alphatransparenz auf TCanvas zeichnen
 
Ich glaube, du hast mich falsch verstanden.
Ich möchte VON einem TBitmap32 (Daten sind bereits dort drinnen - mit Alpha-Kanal) AUF ein Canvas zeichnen (im Kontreten auf ein Canvas eines Controls). Allerdings bekomme ich statt der Transparenz immer einen schwarzen Hintergrund.

LG, ich

CK_CK 9. Aug 2006 20:10

Re: TBitmap32 mit Alphatransparenz auf TCanvas zeichnen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Oh, sorry, ich hab's andersrum verstanden... :wall:

Naja, es ist doch klar, dass die transparenz-Informationen verlohren gehen, wenn du auf ein Canvas zeichnest, das das nicht unterstützt. Du könntest höchstens die transparenz-Farbe durch z.B. clBtnFace ersetzen.

Ich habe hier irgendwo ein Beispiel mit einer transparenten Png-Datei als Button rumfliegen. Ich such' das mal und poste das dann gleich...

Edit: So, da ist's. Es ist eine Beispielkomponente, die bei PngImage dabei ist. Ich hab' die noch ein bisschen modifiziert (neue Eigenschaft: pbsOnlyImage). Wenn du ein Package installierst wird die PngButton-Komponente automatisch unter "Samples" mitinstalliert.

Delphi-Freak 9. Aug 2006 20:16

Re: TBitmap32 mit Alphatransparenz auf TCanvas zeichnen
 
Ja, danke, so meine ichs :wink:
Ich habe eben irgendwas in meinem Canvas drinnen, im einfachsten Fall nur eine einzige Farbe. Und auf diesen Hintergrund möchte ich dann "blenden", sprich die Transparenzinformationen sollen so "verloren gehen", dass sie davor noch angewandt werden. Aber bitte poste dein Beispiel...
Danke für deine Mühe!

LG, ich

CK_CK 9. Aug 2006 20:21

Re: TBitmap32 mit Alphatransparenz auf TCanvas zeichnen
 
So, es ist da :stupid:

Schau' dir mal die Datei "pngextra.pas" an. Da ist der Button drinnen (auch die zeichnen-Methode).

Delphi-Freak 9. Aug 2006 20:31

Re: TBitmap32 mit Alphatransparenz auf TCanvas zeichnen
 
Ja, diese Kompo kenne ich eh. Nur zeichnet der ein TPNGObject auf das Canvas und nicht ein TBitmap32...
Aber trotzdem danke dafür!

LG, ich

CK_CK 9. Aug 2006 20:32

Re: TBitmap32 mit Alphatransparenz auf TCanvas zeichnen
 
Ja, das ist mir klar, aber vielleicht kannst du ja auf PngObject umsteigen... :stupid:

Einen schönen Abend noch,


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:04 Uhr.
Seite 1 von 2  1 2      

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