Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi PNG und Bitmap laden (https://www.delphipraxis.net/116820-png-und-bitmap-laden.html)

Nils_13 7. Jul 2008 09:40


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.

Daniel 7. Jul 2008 09:43

Re: PNG laden
 
Kommt vielleicht die GraphicEx-Library mit Deinen PNGs klar?
http://www.soft-gems.net/index.php?o...d=13&Itemid=33

Nils_13 7. Jul 2008 09:53

Re: PNG laden
 
Schwierig zu sagen, ob es an der Bibliothek liegt oder an folgendem Code:
Delphi-Quellcode:
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;
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).

DeddyH 7. Jul 2008 09:56

Re: PNG laden
 
Lass mal die Zeile
Zitat:

Delphi-Quellcode:
Bmp := TBitmap.Create;

weg. Du übergibst die Bitmap doch bereits als Referenz.

Nils_13 7. Jul 2008 09:58

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.

DeddyH 7. Jul 2008 10:01

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 Thany.org nachsehen, da gibt es eine.

Nils_13 7. Jul 2008 10:10

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.

DeddyH 7. Jul 2008 10:21

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.

Nils_13 7. Jul 2008 10:23

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.

Daniel 7. Jul 2008 10:24

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 01:02 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz