Seite 1 von 1
Bildgröße über Imagehandle
Verfasst: 04.02.2022 14:49
von IB-Software
Hallo,
ich habe über API-Funktionen nur ein Handle eines Bildes (Icon). Ich benötige nun die Größe des Bildes.
ImageWidth und ImageHeight helfen mir nicht weiter, da ich dafür die #Image-Nr benötige, welche es aber nicht gibt. Ich habe nur das Handle.
Ich suche also eine Funktion um die Bildgröße zu bestimmen, wenn nur das Handle bekannt ist.
Ziel ist es, das Bild in ein PureBasic-Image (CreateImage => DrawImage) zu übertragen.
Danke im Voraus.
Re: Bildgröße über Imagehandle
Verfasst: 04.02.2022 16:01
von Sicro
Welche API-Funktion liefert dir das Handle?
Da du
Icon erwähnst, hilft dir
dieser Code vielleicht. Dort wird ein Icon aus einer EXE-Datei ausgelesen. Dabei ermittle ich auch in einem Fall die Icon-Größenangaben, siehe Zeile 336.
Re: Bildgröße über Imagehandle
Verfasst: 04.02.2022 18:30
von IB-Software
Ich nutze zum lesen des Handles SHGetFileInfo und habe mir den von Dir verlinkten Code angeschaut; würde ja eigentlich passen.
Nur leider ergibt GetIconSize nicht die Größe vom gelesenen Iconhandle. Habe das mit PureBasic.exe ausprobiert.
Da ergibt GetIconSize immer die nächstgrößere Kategorie wenn die Größe des IconHandles mit dem angeforderten nicht übereinstimmt. Auch wenn es das größere Icon nicht gibt.
Also bei:
GetIcon("f:\Programme\PureBasic\PureBasic.exe", 240) => RealIconWidth: 256
GetIcon("f:\Programme\PureBasic\PureBasic.exe", 64) => RealIconWidth: 256
GetIcon("f:\Programme\PureBasic\PureBasic.exe", 48) => RealIconWidth: 48; hier stimmt es, weil das Icon vorkommt
GetIcon("f:\Programme\PureBasic\PureBasic.exe", 40) => RealIconWidth: 48
Re: Bildgröße über Imagehandle
Verfasst: 04.02.2022 18:37
von Shardik
Helfen Dir vielleicht die beiden Beispiele von
Danilo oder
Josh aus dem englischen Forum weiter, die aus einem Image-Handle die PureBasic Image-ID ermitteln, die Du dann zur Größen-Ermittlung einsetzen kannst?
Oder die Prozedur
Icon2Image von Sibru, die ein Icon-Handle z.B. von LoadIcon_() in eine PureBasic Image-ID umwandelt?
Re: Bildgröße über Imagehandle
Verfasst: 04.02.2022 19:34
von IB-Software
@Shardik
Danke. Dein letzter Link hat mir weitergeholfen.
Mit
Define IconInfo.ICONINFO
Define StandardIcon ; ImageHandle
GetIconInfo_(StandardIcon, @IconInfo)
x = IconInfo\xHotspot * 2
y = IconInfo\yHotspot * 2
kann ich nun die Größe bestimmen.
Schönes Wochenende