Hinzufügen eines PNG-Bildes zu einer Imagelist in Runtime mit Delphi XE

8

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

  • Bitmaps,
  • Symbole oder
  • Bilder von einer anderen Bildliste

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.

    
Salvador 19.11.2010, 02:26
quelle

3 Antworten

3

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.

    
Uwe Raabe 19.11.2010, 07:50
quelle
16
___ qstnhdr ___ Hinzufügen eines PNG-Bildes zu einer Imagelist in Runtime mit Delphi XE ___ tag123delphi ___ Delphi ist eine Sprache für die schnelle Entwicklung von nativen Windows-, macOS-, Linux-, iOS- und Android-Anwendungen mithilfe von Object Pascal. Der Name bezieht sich sowohl auf die Delphi-Sprache als auch auf deren Bibliotheken, Compiler und IDE, mit denen Delphi-Projekte bearbeitet und debuggt werden können. ___ tag123delphixe ___ Delphi XE ist eine spezielle Version von Delphi. Delphi XE wurde im August 2010 veröffentlicht und ist als eigenständiges Produkt oder als Teil von RAD Studio XE verfügbar. ___ answer4228908 ___
  • Erstellen Sie eine Instanz von TPngImage, PngImage: PngImage
  • Laden Sie das Bild in diese Instanz, PngImage.LoadFromFile (..)
  • Erstellen Sie eine Instanz von TBitmap, Bitmap: TBitmap
  • Weisen Sie PNG der Bitmap Bitmap.Assign (PngImage)
  • zu
  • Fügen Sie die Bitmap der Bildliste hinzu
  • Arbeit erledigt!
___ answer4223062 ___

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.

    
___ qstntxt ___

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

  • Bitmaps,
  • Symbole oder
  • Bilder von einer anderen Bildliste

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.

    
___ answer4618630 ​​___

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ßen

ImgList, 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  

    
___
alex 06.01.2011 18:57
quelle
1
  • Erstellen Sie eine Instanz von TPngImage, PngImage: PngImage
  • Laden Sie das Bild in diese Instanz, PngImage.LoadFromFile (..)
  • Erstellen Sie eine Instanz von TBitmap, Bitmap: TBitmap
  • Weisen Sie PNG der Bitmap Bitmap.Assign (PngImage)
  • zu
  • Fügen Sie die Bitmap der Bildliste hinzu
  • Arbeit erledigt!
David Heffernan 19.11.2010 20:04
quelle

Tags und Links