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.
Bildgröße über Imagehandle
-
- Beiträge: 57
- Registriert: 29.08.2004 11:05
- Computerausstattung: Windows 11
- Wohnort: Berlin
- Kontaktdaten:
Bildgröße über Imagehandle
PureBasic 5.73/6.04 Beta 2; Windows 11 Pro 64
Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz 3.19 GHz 16GB; NVIDIA GeForce RTX 3060 16GB
Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz 3.19 GHz 16GB; NVIDIA GeForce RTX 3060 16GB
Re: Bildgröße über Imagehandle
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.
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.

Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
-
- Beiträge: 57
- Registriert: 29.08.2004 11:05
- Computerausstattung: Windows 11
- Wohnort: Berlin
- Kontaktdaten:
Re: Bildgröße über Imagehandle
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
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
PureBasic 5.73/6.04 Beta 2; Windows 11 Pro 64
Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz 3.19 GHz 16GB; NVIDIA GeForce RTX 3060 16GB
Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz 3.19 GHz 16GB; NVIDIA GeForce RTX 3060 16GB
Re: Bildgröße über Imagehandle
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?
Oder die Prozedur Icon2Image von Sibru, die ein Icon-Handle z.B. von LoadIcon_() in eine PureBasic Image-ID umwandelt?
-
- Beiträge: 57
- Registriert: 29.08.2004 11:05
- Computerausstattung: Windows 11
- Wohnort: Berlin
- Kontaktdaten:
Re: Bildgröße über Imagehandle
@Shardik
Danke. Dein letzter Link hat mir weitergeholfen.
Mit
Schönes Wochenende
Danke. Dein letzter Link hat mir weitergeholfen.
Mit
kann ich nun die Größe bestimmen.Define IconInfo.ICONINFO
Define StandardIcon ; ImageHandle
GetIconInfo_(StandardIcon, @IconInfo)
x = IconInfo\xHotspot * 2
y = IconInfo\yHotspot * 2
Schönes Wochenende
PureBasic 5.73/6.04 Beta 2; Windows 11 Pro 64
Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz 3.19 GHz 16GB; NVIDIA GeForce RTX 3060 16GB
Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz 3.19 GHz 16GB; NVIDIA GeForce RTX 3060 16GB