![]() |
.png Dateien in ImageList laden
Guten Tag,
ich möchte gerne in einer FMX App sehr viele Bilder von Google Material Icons nutzen. Das sind in meinem Fall 460 Bilder vom Typ PNG. Früher hatte ich nur einige wenige Bilder (maximal 10), bei denen es problemlos möglich war, für jedes Bild ein eigenes TImage zu verwenden - da hab ich auch Bilder laden können. Da ich nun allerdings nicht 460 TImages erstellen und jedes Bild manuell reinladen möchte hatte ich die Idee, eine TImageList zu verwenden, hab sie also auf die Form gezogen, den Bilderlisteneditor geöffnet und dann auf hinzufügen geklickt. Wenn ich da jedes Bild einzeln hinzufüge funktioniert das auch, allerdings kann ich nichtmal 4 Bilder auf einmal hinzufügen. Da steht dann immer: 0 - Quellen hinzugefügt 0 - Quellen geändert 0 - gesamt 0 - nicht unterstützte oder fehlende Bilder 0 - Bilder haben inkorrekte Größe 460 - übersprungene Bilder (oder statt 460 halt 2, 3, 4 oder wie viele Bilder auch immer ich nehme) Nun ist meine Frage, wie ich es schaffe, ohne großen Aufwand 460 PNG Dateien auf einmal in meine FMX App (bei Designtime, nicht Runtime) zu integrieren, sodass ich diese später dynamisch aus der TImageList laden kann. Zusätzliche Informationen: - Die Bilder haben eine Größe von 192 x 192 - Die Bilder sind transparent und sollen es auch später beim Nutzen sein - ich verwende Delphi 10.4.2 Community Edition |
AW: .png Dateien in ImageList laden
Ich würde ja eher empfehlen die Bilder in den Ressurcen abzulegen.
* selbst eine .RC oder direkt eine .RES erstellen und einbinden * oder Menü > Projekt > Ressourcen und Bilder .LoadFromResourceName im TPngImage (Vcl.Imaging.pngimage) Deine DFM wird ja sonst nur unnötig groß. Im FormDesigner muß sie dann auch noch bis zu 3 mal in den RAM. Als TextDFM, dann BinärDFM und zum Schluß noch in die Form-Instanz und beim Speichern ebenfalls, nur umgekehrt. |
AW: .png Dateien in ImageList laden
Zitat:
Aber darum geht es ihm nicht. Es ist für ihn zu viel Arbeit jede *.png einzeln zu einer Ressource hinzuzufügen. Er möchte das in einem Rutsch machen. |
AW: .png Dateien in ImageList laden
Zitat:
Zitat:
Die kompilierte .exe Datei ist jetzt mit 460 Bildern mehr weniger als 1 MB größer. Damit bin ich zufrieden. Bei anderen Plattformen wird der Größenunterschied der kompilierten Datei vermutlich recht ähnlich sein. Damit bin ich sehr zufrieden. Falls jemand auf diesen Post stößt der das gleiche Problem wie ich hat gibts hier direkt noch den Code, um die PNG Datei in ein TImage zu laden:
Code:
var
PngStream: TResourceStream; begin PngStream := TResourceStream.Create(HInstance, 'PngImage_42', RT_RCDATA); try Image1.Bitmap.LoadFromStream(PngStream); finally PngStream.Free; end; end; |
AW: .png Dateien in ImageList laden
Da es PNG sind, würde ich zum Laden vielleicht nicht TBitmap verwenden, sondern Graphic, mit einem TPNGImage drin.
Und, wie gesagt ![]() |
AW: .png Dateien in ImageList laden
Zitat:
|
AW: .png Dateien in ImageList laden
Frank hat offenbar übersehen, dass es hier um FMX geht.
|
AW: .png Dateien in ImageList laden
eigentlich nicht, abr grade wo du es sagst ... falsche Unit und dort dann weiter falsch gesucht. :wall:
Hmmmm, gab es im FMX nicht auch was, dass PNG kann, oder macht Bitmap das mit? [edit] finde im FMX nur was bezüglich Drag&Drop mit TBitmap+NSPasteboardTypePNG |
AW: .png Dateien in ImageList laden
Zitat:
|
AW: .png Dateien in ImageList laden
In FMX ist ein TBitmap halt eben kein Wrapper um ein Windows HBITMAP, sondern unterstützt durch Verwendung von TBitmapCodecManager auch andere Formate, die in den entsprechenden FMX.Canvas.<xxx>.pas Units dort registriert werden. Das FMX-TBitmap ist somit ähnlich dem VCL-TGraphic, nur mit etwas mehr Flexibilität.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 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