Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi PNG unterstützung in TImage (https://www.delphipraxis.net/164621-png-unterstuetzung-timage.html)

Tonic1024 22. Nov 2011 08:25

PNG unterstützung in TImage
 
Hi Folks...

Ich war grad etwas überrascht als mir PNGs im Auswahldialog eines TImage (D2009) vorgeschlagen wurden. Ganz Spielkind, wie ich nun mal bin, hab ich direkt ein Testprojekt gestartet und ein teil-transparentes PNG geladen. Boa... geht. Cool...

Aber zur Laufzeit ist es verschwunden. Hab dann zum Testen ein nicht-transparentes PNG geladen. Auch dies ist unsichtbar. Also es wird nicht dargestellt aber reagiert auf Mousedown, Hint, Cursor Einstellungen. Ob man die Eigenschaft Tranzparenz setzt oder nicht spielt dabei keine Rolle.

Könnt ihr das bestätigen? Ist das so gewollt?

[Edit]Ich verwende Vista (unfreiwillig) im classical gray - also nix mit glasframes, aero und co. Könnt ihr mal schauen ob es bei mir vielleicht daran liegt oder ob ihr das Phänomen nachgestellt bekommt?[/Edit]

Gruß,

Toni

DeddyH 22. Nov 2011 08:30

AW: PNG unterstützung in TImage
 
Unter XE seh ich die Grafik auch zur Laufzeit.

Bernhard Geyer 22. Nov 2011 08:50

AW: PNG unterstützung in TImage
 
Hast du evtl. auch andere Kompos die selbst PNG-Support nachrüsten (z.B. von LMD)?

Uwe Raabe 22. Nov 2011 09:17

AW: PNG unterstützung in TImage
 
Wenn das PNG zur Designtime in ein
Delphi-Quellcode:
TImage
geladen werden kann, liegt das daran, daß die PNG-Unterstützung in die IDE mit eincompiliert ist. Damit das PNG dann auch zur Laufzeit angezeigt werden kann, muss natürlich dort auch die PNG-Unterstützung dabei sein. Dies erreicht man, indem man
Delphi-Quellcode:
PngImage
in die
Delphi-Quellcode:
uses
-Clause schreibt.

EDIT: Dies war schon in älteren Versionen ein beliebter Fehler mit JPG Images...

Bernhard Geyer 22. Nov 2011 09:22

AW: PNG unterstützung in TImage
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1137287)
Wenn das PNG zur Designtime in ein
Delphi-Quellcode:
TImage
geladen werden kann, liegt das daran, daß die PNG-Unterstützung in die IDE mit eincompiliert ist.

Es reicht auch wenn ein Packages das nachrüstet :-)

Zitat:

Zitat von Uwe Raabe (Beitrag 1137287)
Damit das PNG dann auch zur Laufzeit angezeigt werden kann, muss natürlich dort auch die PNG-Unterstützung dabei sein. Dies erreicht man, indem man
Delphi-Quellcode:
PngImage
in die
Delphi-Quellcode:
uses
-Clause schreibt.

EDIT: Dies war schon in älteren Versionen ein beliebter Fehler mit JPG Images...

Normalerweise ergäntz die IDE automatisch die Uses-Anweisung um die benötigte Unit damit das passt.
Jedoch könnt es Probleme geben wenn mehrer PNG-Komponenten installiert sind und damit die IDE verwirren. In der DFM wird als erste Bytes der Name der Klasse mitgespeichert welche für den PNG-Support zuständig ist. Wenn jetzt die IDE "verwirrt" ist so trägt sich z.B. in's DFM z.B. TPNGObject (ehemalige freie PNG-Komponente) ein, aber in die Uses-Anweisung z.B. PNGImage was damit nur eine PNG-Klasse anderen Namens bindet.

Tonic1024 22. Nov 2011 09:51

AW: PNG unterstützung in TImage
 
Also ich erinnere mich nicht mal soetwas installiert zu haben. Aber mein System ist auch schon ein paar Jahre alt. Wir haben direkt zugeschlagen als D2009 raus kam. So alt ist meine Installation dann auch schon. Ist viel installiert worden in der Zeit.

Mein Verzeichnis weisen "source/pngimage/pngimage.pas" von 2006 auf und ein "lib/PNG/pngimage.pas" von 2009. Hab das alte Verzeichnis dann mal entfernt, DCUs gelöscht, Delphi neu gestartet und das Projekt neu erzeugt. Gebracht hat das erstmal nichts.

Ich hatte oben was editiert. Kann es mit meiner Windows-Umgebung zu tun haben?


BTW: Die IDE hat PngImage ordnungsgemäß in die Uses aufgenommen.

Gruß,

Toni

himitsu 22. Nov 2011 09:59

AW: PNG unterstützung in TImage
 
Das Löschen der Quelltextdateien bringt nicht sonderlich viel, da Delphi diese oftmals/meistens nicht direkt benutzt.
Stattdessen wird die vorkompilierte Version (gibt da 1-2 DCUs, mit und ohne Debuginfos) verwendet oder gar die DCU, welcher irgendwo in einer der Laufzeitpackages (BPLs) versteckt ist.

Tonic1024 24. Nov 2011 09:37

AW: PNG unterstützung in TImage
 
Okay, der Trick ist: Beide Verzeichnisse sind falsch. Die richtige PNGImage.pas liegt in [..]\source\WIN32\vcl\imaging\PNGImage und die DCU sollte in [..]\lib liegen. Die DCU fehlt mir dort aber. Hab sie mir kompiliert und dorthin kopiert. Jetzt klappt es.

Ich danke euch.

Toni


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 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