AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PNG und Bitmap laden

Ein Thema von Nils_13 · begonnen am 7. Jul 2008 · letzter Beitrag vom 7. Jul 2008
Antwort Antwort
Seite 1 von 3  1 23      
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

PNG und Bitmap laden

  Alt 7. Jul 2008, 10:40
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.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: PNG laden

  Alt 7. Jul 2008, 10:43
Kommt vielleicht die GraphicEx-Library mit Deinen PNGs klar?
http://www.soft-gems.net/index.php?o...d=13&Itemid=33
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#3

Re: PNG laden

  Alt 7. Jul 2008, 10:53
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).
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#4

Re: PNG laden

  Alt 7. Jul 2008, 10:56
Lass mal die Zeile
Zitat:
Bmp := TBitmap.Create;
weg. Du übergibst die Bitmap doch bereits als Referenz.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#5

Re: PNG laden

  Alt 7. Jul 2008, 10:58
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#6

Re: PNG laden

  Alt 7. Jul 2008, 11:01
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#7

Re: PNG laden

  Alt 7. Jul 2008, 11:10
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#8

Re: PNG laden

  Alt 7. Jul 2008, 11:21
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#9

Re: PNG laden

  Alt 7. Jul 2008, 11:23
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.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: PNG laden

  Alt 7. Jul 2008, 11:24
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.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 Uhr.
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