AGB  ·  Datenschutz  ·  Impressum  







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

Icon aus Exe in Imagelist verliert Transparenz

Ein Thema von MacGuyver · begonnen am 7. Sep 2023 · letzter Beitrag vom 11. Sep 2023
Antwort Antwort
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
295 Beiträge
 
Turbo Delphi für Win32
 
#1

Icon aus Exe in Imagelist verliert Transparenz

  Alt 7. Sep 2023, 09:22
Moin Leute

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.
Angehängte Dateien
Dateityp: zip LoadIconFromExe.zip (230,9 KB, 14x aufgerufen)
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#2

AW: Icon aus Exe in Imagelist verliert Transparenz

  Alt 7. Sep 2023, 13:21
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.
  Mit Zitat antworten Zitat
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
295 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Icon aus Exe in Imagelist verliert Transparenz

  Alt 8. Sep 2023, 09:54
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.
Angehängte Dateien
Dateityp: zip Icon.zip (580 Bytes, 2x aufgerufen)
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#4

AW: Icon aus Exe in Imagelist verliert Transparenz

  Alt 8. Sep 2023, 12:04
Es ist wohl als 16x16 vorhanden, aber da du 32x32 willst, wird es sofort hochskaliert.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
295 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Icon aus Exe in Imagelist verliert Transparenz

  Alt 8. Sep 2023, 13:05
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.
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#6

AW: Icon aus Exe in Imagelist verliert Transparenz

  Alt 8. Sep 2023, 14:04
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 8. Sep 2023 um 14:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von MacGuyver
MacGuyver

Registriert seit: 9. Sep 2003
Ort: Wildeshausen
295 Beiträge
 
Turbo Delphi für Win32
 
#7

AW: Icon aus Exe in Imagelist verliert Transparenz

  Alt 11. Sep 2023, 14:43
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.
Englisch eine Weltsprache? Zu kompliziert und der nahe Osten würde Englisch als Pflichtweltsprache nicht akzeptieren.
IDO wäre genau das Richtige: http://forum.idolinguo.de/index.php oder www.idolinguo.de
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:44 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