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/)
-   -   Icon aus Exe in Imagelist verliert Transparenz (https://www.delphipraxis.net/213673-icon-aus-exe-imagelist-verliert-transparenz.html)

MacGuyver 7. Sep 2023 08:22

Icon aus Exe in Imagelist verliert Transparenz
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin Leute :hi:

Ich möchte das kleine Icon aus Exe-Dateien auslesen und in einem Menü anzeigen. Wenn ich die Icon-Datei in die Imageliste lade (con der IDE aus), klappt das wunderbar. Wenn ich mit ExtractIconEx arbeite und das dann der Liste hinzufüge, sehen die Bilder dann schlimm aus. Ich habe einige Ansätze probiert, hat aber nicht gefunzt.

Blup 7. Sep 2023 12:21

AW: Icon aus Exe in Imagelist verliert Transparenz
 
Das liegt wahrscheinlich daran, dass IconSmall nur 16x16 Pixel groß ist.
Es ist fraglich ob die Datei wirklich ein Image in dieser Größe enthält.
Beim Skalieren geht natürlich die Qualität verloren, insbesondere die Maske für transparente Pixel kann schlecht verkleinert werden.

Wird das Icon direkt in eine leere ImageList geladen, wird wahrscheinlich die Größe mit SetSize() an die tatsächliche Icon-Größe angepasst.

MacGuyver 8. Sep 2023 08:54

AW: Icon aus Exe in Imagelist verliert Transparenz
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal einen Haltepunkt gesetzt und "Image.Picture.Width" abgefragt. Siehe da, das Bild ist 32 x 32 Pixel groß. Wenn ich das Icon speicher, sehe ich bei den Eigenschaften, dass das Bild 16 x 16 groß ist. Lade ich die Datei wieder, ist die Größe wieder 32 x 32.

Hä?

Was passiert denn, wenn ich diese Datei der Imagelist (16 x 16) über die IDE hinzufüge? Dort wird es dann korrekt angezeigt.

Ich habe das Bild mal angehängt.

himitsu 8. Sep 2023 11:04

AW: Icon aus Exe in Imagelist verliert Transparenz
 
Es ist wohl als 16x16 vorhanden, aber da du 32x32 willst, wird es sofort hochskaliert.

MacGuyver 8. Sep 2023 12:05

AW: Icon aus Exe in Imagelist verliert Transparenz
 
Nein, genau anders herum. Es ist in 32 x 32 in der Exe gespeichert und er tut so, als ob das 16 x 16 durch die Funktion ExtractIconEx ist:

Delphi-Quellcode:
  iFound := ExtractIconEx (PChar (s), 0, IconLarge, IconSmall, 1);

  if iFound = 0 then Exit;

  Icon := TIcon.Create;
  try
    Icon.Handle := IconSmall;


    ImageList.AddIcon (Icon);
Die ImageList skaliert das dann brutal runter, da sie auf 16 x 16 eingestellt ist.

himitsu 8. Sep 2023 13:04

AW: Icon aus Exe in Imagelist verliert Transparenz
 
Du fragst auch explizit SMALL ab ... hätte gedachte es wäre 32 aber vielleicht ist SMALL ja 16
MEDIUM 32 und LARGE sonstwas, oder so

Oft haben wir in der EXE ja ein MultiResIcon, also eine ICO, wo mehrere Icons drin sind.

MacGuyver 11. Sep 2023 13:43

AW: Icon aus Exe in Imagelist verliert Transparenz
 
Bliebt die spannende Frage: Was macht denn die IDE, wenn ich auf der ImageList einen Doppelklick mache und im Editor dann das Bild lade? So sieht es dann super aus. Klar, ich könnte alle Icons per Hand in die Liste einfügen, geht dann aber leider nicht, wenn eine neue Exe hinzukommt.


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