![]() |
Delphi-Version: XE2
TImage zeigt keine PNG Bilder an
Mein XE3 verhält sich mal wieder sehr komisch, und zwar passiert folgendes:
Wenn ich ein TImage auf meine Form lege und ein jpg Bild rein lade funktioniert alles wunderbar, wenn ich aber nun ein PNG Bild lade wird mir dieses zwar zur Designzeit angezeigt aber beim ausführen nicht mehr. Woran kann das liegen? |
AW: TImage zeigt keine PNG Bilder an
Du brauchst Vcl.Imaging.pngimage irgendwo in der Uses-Anweisung, dann wird PNG-Support mit eingebunden. Die IDE hat das über das Designtime-Package schon drin.
|
AW: TImage zeigt keine PNG Bilder an
Ist bereit eingebunden halt nur als pngimage zeigt aber auf das selbe.
|
AW: TImage zeigt keine PNG Bilder an
Hast du evtl. weitere Komponentensammlungen installiert die PNG-Support mitbringen.
Im gespeicherten Stream der DFM steht am Anfang der Komponentenname der für die PNG-Anzeige zuständig ist. Wenn nun in der IDE ein anderer PNG-Imageviewer zusätzlich installiert ist schreibt dieser dann seine "Signatur" rein. Damit kann dan die eompilierte Exe dann nichts mehr anfangen weil dort nur der Standard-Viewer sich registriert. |
AW: TImage zeigt keine PNG Bilder an
Ich denke daran wirds liegen, weil ich noch eine Komponente für PNGButtons benutze, und außerdem das Projekt mal ein Delphi 2005 Projekt war, wie fix ich das am besten?
Edit: Was mir noch aufgefallen ist: Bilder zur Laufzeit laden geht! |
AW: TImage zeigt keine PNG Bilder an
Zitat:
Zur DFM wird aber explizit der Klassenname gespeichert, wovon aber der Typ scheinbar nicht einkompiliert wurde. In der IDE sind aber dennoch alle Klassen registiert, welcher grade als Package dort geladen sind. Hier mußt du entweder dafür sorgen, daß diese "böse" PNG-Klasse aus den Packages des Projekts ausgeschlossen werden. (z.B. Package deinstallieren oder ![]() Oder du definierst dir ein Alias für deine "neue" PNG-Klasse, registierst sie vor dem Laden der DFM und leitest so den Namen der "anderen" Klasse auf die "neue" Klasse um. ![]() |
AW: TImage zeigt keine PNG Bilder an
Zitat:
|
AW: TImage zeigt keine PNG Bilder an
Zitat:
![]() |
AW: TImage zeigt keine PNG Bilder an
Ein bissl übertrieben diese Komponente?
Die bringt ihr eigenes PNG und ZLIB mit. [edit] Nimm diese Komponente, schmeiß die Units pngimage und zlib weg, und fertig. Wer will, kann pngimage in Vcl.Imaging.pngimage umbenennen und das TPNGObject in TPngImage ersetzen. Ob dann alles Funktiont, kann ich nicht sagen, aber es kompiliert schonmal problemlos und ohne Warnungen oder Hinweise. |
AW: TImage zeigt keine PNG Bilder an
Zitat:
Wer Lust und Zeit hat kann diese Komponente ja soweit anpassen das sie bei neueren Delphi-Versionen die mitgelieften PNG und ZLIB-Units verwendet oder einfach selbst im Code eine weiche der Art
Delphi-Quellcode:
verwenden
type
{$IFDEF DELPH_10_UP} TMyPNG = <TPNG_von_Delphi>; {$ELSE } TMyPNG = <TPNG_von_PNGDelphi>; {$ENDIF} |
AW: TImage zeigt keine PNG Bilder an
Zitat:
Es scheinen auch die selben Implementierungen zu sein. Ein IFDEF wird da leider nicht viel bringen, denn da die beiden Units pngimage.pas auch noch gleich heißen und die Komponenten auch, kompiliert Delphi immer die zweite Implementation ein. Ach ja, in Delphi scheint der alte Name TPNGObject nicht mehr zu registeiren, sondern nur noch den neuen TPngImage, womit diese Klasse am Ende in der IDE unter beiden Namen registriert wurde, aber in der EXE nur noch unter dem neuen Namen.
Delphi-Quellcode:
sollte demnach helfen, wenn man die doppelten Units nicht entfernen mag.
RegisterClassAlias(TPngImage, 'TPNGObject');
|
AW: TImage zeigt keine PNG Bilder an
Zitat:
Abgesehen davon ist die Verwendung der Sourcen von Gustavo Huffenbacher Daud lizenzrechtlich eher fraglich. |
AW: TImage zeigt keine PNG Bilder an
Zitat:
Zitat:
![]() Zitat:
|
AW: TImage zeigt keine PNG Bilder an
Zitat:
Problematisch wird es wenn man diese Komponenten weiterentwickeln wollte oder sie neu in anderen Sammlungen aufnehmen würde. Übrigens hat vor dem Emba-Kauf LMD diese Komponente Lizensiert und ist jetzt integraler Bestandteil derer Bibliotheken. |
AW: TImage zeigt keine PNG Bilder an
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 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