Ich suche einen Befehl, mit dem man Bilder aus einer Dll-Datei laden kann. Und sie dann mit GDi+ weiterverarbeiten kann.
Ich suche schon seit längerem danach, bin aber noch auf keinen grünen Zweig gestoßen.
Wenn jemand eine Lösung oder eine gute Idee hat bitte sagen.
Danke
Bitmaps aus einer Dll laden?
-
- [ gelöst ]
-
Faweyr -
15. November 2009 um 17:15 -
Geschlossen -
Erledigt
-
-
hmm vieleicht kannst du das bild in ein string wandeln und die dan irgendwie in eine Dll packen . obs aber mit dem Dll call funzt weis ich nicht denke da an probleme aber das bild in ein string zusammen fassen geht
korrigiert mich wenn ich falschliege
Mfg FunH@cker
-
Bitmaps mit folgender Funktion laden:
[autoit]Func _ResourceLoadImage($DLL, $ResName); THX to Progandy, Zedna
[/autoit][autoit]
Local $hInstance, $InfoBlock, $GlobalMemoryBlock, $MemoryPointer, $ResSize, $hData, $pData, $pStream, $dll2, $pBitmap
$hInstance = DllCall("kernel32.dll", "int", "LoadLibrary", "str", $DLL)
$InfoBlock = DllCall("kernel32.dll", "int", "FindResourceA", "int", $hInstance[0], "str", $ResName, "long", 10)
$ResSize = DllCall("kernel32.dll", "dword", "SizeofResource", "int", $hInstance[0], "int", $InfoBlock[0])
$GlobalMemoryBlock = DllCall("kernel32.dll", "int", "LoadResource", "int", $hInstance[0], "int", $InfoBlock[0])
$MemoryPointer = DllCall("kernel32.dll", "int", "LockResource", "int", $GlobalMemoryBlock[0])
DllCall("Kernel32.dll", "int", "FreeLibrary", "str", $hInstance[0])
$hData = _MemGlobalAlloc($ResSize[0], 2)
$pData = _MemGlobalLock($hData)
_MemMoveMemory($MemoryPointer[0], $pData, $ResSize[0])
_MemGlobalUnlock($hData)
$pStream = DllCall("ole32.dll", "int", "CreateStreamOnHGlobal", "int", $hData, "long", 1, "Int*", 0)
$pBitmap = DllCall($ghGDIPDll, "int", "GdipCreateBitmapFromStream", "ptr", $pStream[3], "int*", 0)
$DLL = DllStructCreate("Uint", $pStream[3])
$dll2 = DllStructCreate("uInt", DllStructGetData($DLL, 1) +
DllCall("", "UInt", DllStructGetData($dll2, 1), "UInt", $pStream[3])
_WinAPI_DeleteObject($pStream[3])
$pStream[3] = 0
_MemGlobalFree($hData)
Return $pBitmap[2]
EndFunc ;==>_ResourceLoadImage$r[0] = _ResourceLoadImage(@scriptdir & "\img\gfx.dat","move_1_0")
[/autoit]Des weiteren solltest du alle Sprites editieren und auf gleiche Größe bringen, damit die komischen Bewegungen wegfallen (Seitengröße ändern, nicht skalieren)
Bei Fragen einfach melden...
-
ey...das hat alle meine erwartungen übertroffen. Propiers gleich aus.
Ja. Das mit den Sprites möchte ich auch machen. Aber mit GDI+ hab ich es noch nicht geschafft teile aus einem Bild herauszuschneiden.
Vielleicht weißt du/ihr noch was. Wenn nicht benutze ich die Prospeed.dll, die hat eine Funktion dafür.
Aber vielen Dank schon mal -
servus...
weiß nicht ob du es noch gebrauchen kannst aber ich hatte auch mal das Problem mit den Bildern aus dlls und mit Transparenz....
Hier der Link wie man Bilder z.b. Pngs in Icos,dann in dlls und dann mit tranzparenz in Guis bekommt.
[ gelöst ] IconFX Beispiele ( Icon2DLLs )MFG chris