![]() |
Delphi-Version: 10.3 Rio
PNG in TImage falsch dargestellt
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo,
ich habe ein kleines Programm, was mir Texturen auflistet und diese nach Bedarf anzeigt. Die Texturen sind als PNG gespeichert und werden (dank PNGImage) auch problemlos von Delphi geladen. Die Texturen sind fast immer 32x32 px groß und damit ich diese auf einem FHD Bildschirm auch ordentlich beurteilen kann, dachte ich, ich stelle sie ein wenig größer dar. TImage war von dieser Idee leider weniger begeistert, da es manche der Texturen mit schwarzem Outline darstellt. Dabei trat der Fehler bisher nur bei Bildern mit (genutztem) Alpha-Channel auf, jedoch auch nicht bei jedem Bild mit Alpha-Werten. Damit ist die Beurteilung der Texturen logischerweise unmöglich, da nicht korrekt dargestellt. Wenn ich mir die Pixeldaten vom TImage (!) ausgeben lasse, ist alles korrekt, also muss ein Fehler bei der gestreckten Darstellung passieren. Zum Verständnis: Das TImage hat
Delphi-Quellcode:
und
Proportional := true
Delphi-Quellcode:
. Das TImage soll das Bild auf eine Größe von 144x144 px, ultimativ aber auf jede beliebige Größe skalieren können. Der Fehler tritt nicht auf, wenn das TImage auf 64x64 px (x2) skaliert, bei 128x128 px (x4) wiederum schon.
Stretch := true
Was übersehe ich hier? Warum werden bei manchen (aber nicht allen) PNGs solche Outlines dargestellt? Im Anhang sehr ihr einmal das Originalbild (in 32 px und 144 px) und was das TImage daraus macht (in 144 px). |
AW: PNG in TImage falsch dargestellt
TImage (zumindest das der VCL) basiert auf der alten GDI, welche mit Transparenzen nicht wirklich umzugehen weiß, auch wenn sie korrekt in den Rohdaten stehen. Wenn du bei VCL bleiben willst (bzw. musst), ist die Graphis32 Lib eine sehr sehr gute freie und offene Alternative, die auch mit Transparenz vernünftig spielt. Man könnte auch auf die GDI+ zurückgreifen, da gibt es auch freie Header zu, jedoch fand ich die Arbeit damit immer recht klobig. Dazu kommt, dass auch GDI+ schon seit Jahren abgekündigt ist.
|
AW: PNG in TImage falsch dargestellt
|
AW: PNG in TImage falsch dargestellt
Zitat:
|
AW: PNG in TImage falsch dargestellt
Sind die PNGs, wo es nicht geht, Palettenbilder?
|
AW: PNG in TImage falsch dargestellt
Danke für die schnellen Antworten.
@Medium Habe mir die graphics32 mal angeschaut. Nach fast einer halben Stunde Harreraufen mit den Delphi Settings ging es dann endlich. Es tut, was es muss, aber nicht so richtig was es soll. Nicht falsch verstehen, meine Bitmaps werden bildschön, skaliert und mit Transparenz angezeigt, aber die eigentliche Zuweisung der Bitmaps ist alles andere als verständlich für mich :stupid:. Habe eine Liste mit Objekten, die Namen, ein paar andere Daten und eben auch die Bilder selbst speichern sollen. Diese sollen dann bei Bedarf angezeigt werden, aber irgendwie bekomme ich die Bitmap nicht von meinem Objekt in das Image32 gedrückt :|. @Redeemer Darf ich erfahren, was Palettenbilder sind? |
AW: PNG in TImage falsch dargestellt
Zitat:
PNG kann die Pixel jeweils als RGB speichern, aber es geht auch als Index in einer Farbpalette. |
AW: PNG in TImage falsch dargestellt
Ah.
Nun, nicht das ich wüsste. |
AW: PNG in TImage falsch dargestellt
Zitat:
|
AW: PNG in TImage falsch dargestellt
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 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