![]() |
PNG und Bitmap laden
Hi,
die Unit PNGImage welche ich lange Zeit benutzt habe lädt offensichtlich nicht alle PNGs, wie ich heute festgestellt habe. Gibt es eine Unit die wirklich ordentlich PNGs in allen Versionen des Formats laden kann ? Ob nun Transparenz geladen wird oder nicht ist mir egal, denn das brauche ich nicht. |
Re: PNG laden
Kommt vielleicht die GraphicEx-Library mit Deinen PNGs klar?
![]() |
Re: PNG laden
Schwierig zu sagen, ob es an der Bibliothek liegt oder an folgendem Code:
Delphi-Quellcode:
Ich muss (leider) die ganzen Fremdformate konvertieren, da eine TImageList nur TBitmap oder TIcon unterstützt. Wäre eventuell eine bessere Lösung, die ImageList zu modifizieren, aber das klappt denke ich nicht, da ein Canvas grundsätzlich ein TBitmap benötigt. ABER man könnte trotzdem direkt ein Canvas.Draw(0, 0, PNG); einbauen, ob das sich positiv in der Performance ausdrückt und sich dementsprechend der Aufwand lohnt...gute Frage. Aber nun zum Code: Bitmap ungültig lautet die Fehlermeldung in der Zeile Bmp.Assign(Png).
procedure Png2Bmp(var Bmp : TBitmap; PngFilename : String);
var Png : TGraphicExGraphic; begin Bmp := TBitmap.Create; Png := TGraphicExGraphic.Create; try Png.LoadFromFile(PngFilename); Bmp.Assign(Png); finally Png.Free; end; end; |
Re: PNG laden
Lass mal die Zeile
Zitat:
|
Re: PNG laden
Nein, das Bitmap ist zu dem Zeitpunkt nicht erzeugt und muss von dieser Funktion erzeugt werden. Habe es dennoch probiert und hat wie erwartet auch nichts geändert.
|
Re: PNG laden
Ich versteh die Logik zwar nicht ganz, aber wenn es nur um eine ImageList für PNGs geht, kannst Du auch einmal bei
![]() |
Re: PNG laden
Nicht nur für PNGs. Es sollten möglichst viele Formate unterstützt werden. JPG und BMP müssen zum Beispiel auch noch unterstützt werden. Es kommt mir eben auf Performance an, daher gefällt mir die Funktion Png2Bmp auch nicht.
Die PNGImageList kann für die TListView verwendet werden. Daher denke ich mir gerade, ob es nicht relativ schnell gehen müsste, sich eine eigene ImageList zu programmieren. Sie muss eigentlich nur Laden können. Sozusagen als Icon-/Bild-Array für die ListView, welche dann die Icons/Bilder zeichnet. |
Re: PNG laden
Ich kenne die Bibliothek nicht, aber wie ist denn TGraphicExGraphic definiert? Können das verschiedene Formate sein? Wenn ja, würde ich versuchen, sowohl die PNG, JPG etc. als auch die Bitmap als TGraphicExGraphic zu übergeben und dann zu assignen.
|
Re: PNG laden
So wie ich das sehe ist sie die oberste Klasse und hat als Unterklassen Klassen für PNG, JPG usw. Aber das mit dem assignen habe ich doch oben speziell für PNG schon gemacht und es lief schief.
|
Re: PNG laden
GraphicEx ist sehr cool, man bindet es nur mittels Uses-Anweisung in das Projekt ein und im Hintergrund wird TPicture derart erweitert, dass es alle von der Bibliothek unterstützten Formate laden kann. Ein simples .LoadFromFile() reicht dann aus.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 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