Ich muss in der Laufzeit ein PNG-Bild zu einem TImageList
hinzufügen. Ich habe mir die Funktionen von TCustomImageList
angesehen, aber sie erlauben nur das Hinzufügen von
ZB:
%Vor%Wie kann ich einer ImageList-Komponente ein PNG-Bild hinzufügen, ohne dieses Bild in BMP umzuwandeln?
Die IDE kann bereits zur Entwurfszeit eine PNG zu einer ImageList hinzufügen:
Jetzt müssen wir es zur Laufzeit machen.
Laut MSDN kann eine Bildliste nur Bitmaps und Symbole enthalten. Um ein PNG-Bild zu einer Bildliste hinzuzufügen, müssen Sie es zuerst in ein Symbol umwandeln. Der entsprechende Code befindet sich im PngComponents -Paket. Wenn Sie nur PNG-Bilder in Ihrer Bildliste haben, können Sie der Einfachheit halber nur die TPngImageList verwenden, die mit diesem Paket geliefert wird.
Laut MSDN kann eine Bildliste nur Bitmaps und Symbole enthalten. Um ein PNG-Bild zu einer Bildliste hinzuzufügen, müssen Sie es zuerst in ein Symbol umwandeln. Der entsprechende Code befindet sich im PngComponents -Paket. Wenn Sie nur PNG-Bilder in Ihrer Bildliste haben, können Sie der Einfachheit halber nur die TPngImageList verwenden, die mit diesem Paket geliefert wird.
Ich muss in der Laufzeit ein PNG-Bild zu einem %code% hinzufügen. Ich habe mir die Funktionen von %code% angesehen, aber sie erlauben nur das Hinzufügen von
ZB:
%Vor%Wie kann ich einer ImageList-Komponente ein PNG-Bild hinzufügen, ohne dieses Bild in BMP umzuwandeln?
Die IDE kann bereits zur Entwurfszeit eine PNG zu einer ImageList hinzufügen:
Jetzt müssen wir es zur Laufzeit machen.
Delphi XE unterstützt alle PNG-Bilder und 32-Bit Bitmaps mit Alphakanal. So fügen Sie einer ImageList png hinzu:
%Vor%Sie müssen
einschließenImgList, PngImage
Wenn Sie jetzt versuchen:
%Vor%Sie werden sehen, dass die Bilder gleich sind. Eigentlich gibt es ein paar \ pm 1 rgb Unterschiede aufgrund von Rundungsfehlern beim Alpha-Blending aber Sie können sie nicht mit bloßem Auge sehen. Vernachlässigen zu setzen bmp.AlphaFormat: = afIgnored; würde das zweite Bild ergeben viel dunkler!
Mit freundlichen Grüßen
alex