Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   D2010: transparentes PNG ausgeben (https://www.delphipraxis.net/152702-d2010-transparentes-png-ausgeben.html)

hoika 2. Jul 2010 10:39

D2010: transparentes PNG ausgeben
 
Hallo #,

seit Stunden probiere ich hier rum ;(

Ich möchte eine transparentes PNG ausgeben.
Delphi-Quellcode:
Bitmap: TBitmap;

  Bitmap.PixelFormat:= pf32bit;
  Bitmap.LoadFromFile('XXX');

  theCanvas.Draw(0, 0, Bitmap); // theCanvas: TCanvas

  // oder
  theCanvas.Draw(0, 0, PngImage); // theCanvas: TCanvas
Das Problem ist, dass der transparente Teil immer schwarz ist.
Auch SetBkMode oder die Nutzung von TPngImage zeigt mir das immer schwarz an.

Das Problem ist bekannt (google alte Threads)

Was mache ich verkehrt ?


Heiko

mkinzler 2. Jul 2010 10:41

AW: D2010: transparentes PNG ausgeben
 
Hast du es schon mal mit einer speziellen PNG-Kompo versucht? Es scheint so, als die Transparenzinformationen beim Laden in ein Bitmap verloren geht

hoika 2. Jul 2010 10:43

AW: D2010: transparentes PNG ausgeben
 
Hallo,

habe es gerade bold gemacht. ;)

D2010 hat ja jetzt ein TPngImage (genauer ab 2009 ist es drin).

Aber ich Dussel hatte es aus meiner Spezial-Komponente an ein Bitmap übergeben
und von da an das PngImage.
Jetzt zeigt er es an, aber zu groß ;(

OK, GDI+ ist dein Freund.


Heiko

Bummi 2. Jul 2010 10:53

AW: D2010: transparentes PNG ausgeben
 
Delphi-Quellcode:
   Canvas.Brush.Style := bsClear;
   Canvas.Draw(0,0,image1.Picture.Graphic);

hoika 2. Jul 2010 11:36

AW: D2010: transparentes PNG ausgeben
 
Hallo,

mit bsClear klappt es auch nicht.

Das Problem liegt wirklich darin, dass das Image ein PngImage sein muss.

Meine Bilder liegen in einer DB und werden als Stream in die Anwendung geladen

Ein PngImage.LoadFromStream meldet "ungültiges Format"

Mach ich aber ein

Stream.WriteToFile('XXX.PNG';
PngImage.ReadFromFile('XXX.PNG';

klappt alles.


Mensch ! Mensch ! ;(


Aber das kann ich so lösen.


Danke an alle.


Heiko


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