![]() |
Alpha-PNG zur Laufzeit in eine TImageList laden (XE2)
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo!
Ich habe eine TImageList und darin per Property-Editor ein Alpha-PNG geladen. Dieses PNG wird zur Laufzeit z.B. auf einem SpeedButton korrekt angezeigt (Screenshot 1). Wenn ich das selbe PNG (exakt die selbe Datei) zur Laufzeit in die ImageList nachlade, dann sieht es aus wie im Screenshot 2. Wo mache ich da den Denkfehler?
Delphi-Quellcode:
PS: Das eine fehlende Free ist mir schon klar, nur zu Testzwecken ;-)
procedure TForm1.Button1Click(Sender: TObject);
var PNG: TPngImage; BMP: TBitmap; begin PNG:= TPngImage.Create; BMP:= TBitmap.Create; try PNG.LoadFromFile('test.png'); BMP.PixelFormat:= pf32bit; PNG.AssignTo(BMP); ImageList_Add(ImageList.Handle, BMP.Handle, 0); SpeedButton.ImageIndex:= 1; finally PNG.Free; // BMP.Free; end; end; |
AW: Alpha-PNG zur Laufzeit in eine TImageList laden (XE2)
ich habe gerade nur D2010 zur Hand, folgendes funktioniert bei Dir nicht?
Delphi-Quellcode:
var
PNG: TPngImage; BMP: TBitmap; begin PNG:= TPngImage.Create; BMP:= TBitmap.Create; try PNG.LoadFromFile('.......\xyz.png'); bmp.Assign(png); Imagelist.Add(bmp,nil); finally PNG.Free; BMP.Free; end; end; |
AW: Alpha-PNG zur Laufzeit in eine TImageList laden (XE2)
Doch, funktioniert.... genauso bescheiden wie mein Versuch oben.
|
AW: Alpha-PNG zur Laufzeit in eine TImageList laden (XE2)
einen Versuch hätte ich noch anzubieten
Delphi-Quellcode:
mit der Routine von
var
ico:TIcon; begin ico:=TIcon.Create; try LoadPNGAsIcon('C:\Bilder\IconCollection\ix_ap_all\32x32\shadow\about.png',ico); imagelist1.AddIcon(ico); Action1.ImageIndex := 0; Speedbutton1.Action := Action1; finally ico.Free; end; end; ![]() |
AW: Alpha-PNG zur Laufzeit in eine TImageList laden (XE2)
Jau! :-) Das funktioniert. Übrigens auch ohne den Umweg über TAction, wovon ich in anderen Threads hier auch schon gelesen habe. Ich würde das Ganze so interpretieren, dass das Standard-VCL-TBitmap entgegen allen Erwartungen doch nicht 100% RGBA-fähig ist.
Hätte aber nicht gedacht, dass man solche Klimmzüge machen muss. Gerade weil Delphi inzwischen spezialisierte Klassen wie TPNGObject und TPNGImage mitliefert und TBitmap eigentlich RGBA unterstützen soll. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:03 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