Bitmaps aus einer Dll laden?

  • 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

    Einmal editiert, zuletzt von Faweyr (17. November 2009 um 15:03)

  • 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 :D

  • Bitmaps mit folgender Funktion laden:

    [autoit]

    Func _ResourceLoadImage($DLL, $ResName); THX to Progandy, Zedna
    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) + 8)
    DllCall("", "UInt", DllStructGetData($dll2, 1), "UInt", $pStream[3])
    _WinAPI_DeleteObject($pStream[3])
    $pStream[3] = 0
    _MemGlobalFree($hData)
    Return $pBitmap[2]
    EndFunc ;==>_ResourceLoadImage

    [/autoit][autoit]

    $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 :)