GDI+ Save Image to File

  • Hi,

    ich habe folgendes Problem es wird keine Bild gespeichert.

    Hier mein Code

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;~ $col = _ChooseColor (2)
    $col = 0x22B14C

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()
    $Gui = GUICreate("")
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Gui)

    [/autoit] [autoit][/autoit] [autoit]

    $hFontFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFontFamily, 20)
    $tLayout = _GDIPlus_RectFCreate(0, 0, 100, 32)
    $hFormat = _GDIPlus_StringFormatCreate()
    $hBrush = _GDIPlus_BrushCreateSolid(0xff000000 + $col)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    For $x = 0 To 99999
    _GDIPlus_GraphicsFillRect($hGraphic, 0, 0, 90, 32)
    _GDIPlus_GraphicsDrawStringEx($hGraphic, AddZero($x, 5), $hFont, $tLayout, $hFormat, $hBrush)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(100, 32, $hGraphic)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\1\" & $x & ".bmp")
    _WinAPI_DeleteObject($hBitmap)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(10)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Until GUIGetMsg() = -3

    [/autoit] [autoit][/autoit] [autoit]

    Func AddZero($nZahl, $EndLen)
    While 1
    If StringLen($nZahl) >= $EndLen Then
    Return $nZahl
    Else
    $nZahl = "0" & $nZahl
    EndIf
    WEnd
    EndFunc ;==>AddZero

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_FontFamilyDispose($hFontFamily)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrush)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()

    [/autoit]

    Schon mal Danke im vorraus!

  • Erstell doch erstmal den Ordner (DirCreate) und lösch das Leerzeichen vor \1\. Dann klappt es bei mir.

  • So gibts farbige, aber in der Gui ist nix zu sehen.^^

    Spoiler anzeigen
    [autoit]

    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    DirCreate(@ScriptDir & "\1")
    ;~ $col = _ChooseColor (2)
    $col = 0x22B14C

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    $Gui = GUICreate("", 300, 300)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(90, 32, $hGraphic)
    $hGraphicBuff = _GDIPlus_ImageGetGraphicsContext($hBitmap)
    _GDIPlus_GraphicsSetSmoothingMode($hGraphicBuff, 2)
    $hFontFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFontFamily, 20)
    $tLayout = _GDIPlus_RectFCreate(0, 0, 100, 32)
    $hFormat = _GDIPlus_StringFormatCreate()
    $hBrush = _GDIPlus_BrushCreateSolid(0xff000000 + $col)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    For $x = 0 To 5
    _GDIPlus_GraphicsFillRect($hGraphicBuff, 0, 0, 90, 32)
    _GDIPlus_GraphicsDrawStringEx($hGraphicBuff, AddZero($x, 5), $hFont, $tLayout, $hFormat, $hBrush)

    [/autoit] [autoit][/autoit] [autoit]

    $ret = _GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\1\" & $x & ".bmp")

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite($ret & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    _WinAPI_DeleteObject($hBitmap)
    Sleep(10)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Until GUIGetMsg() = -3

    [/autoit] [autoit][/autoit] [autoit]

    Func AddZero($nZahl, $EndLen)
    While 1
    If StringLen($nZahl) >= $EndLen Then
    Return $nZahl
    Else
    $nZahl = "0" & $nZahl
    EndIf
    WEnd
    EndFunc ;==>AddZero

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_GraphicsDispose($hGraphicBuff)
    _GDIPlus_FontFamilyDispose($hFontFamily)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrush)

    [/autoit] [autoit][/autoit] [autoit]

    ;~ _WinAPI_ReleaseDC($Gui, $hDC)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • So sollte es gehen:

    Spoiler anzeigen
    [autoit]


    #include <GDIPlus.au3>
    #include <Misc.au3>
    #include <WinAPI.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;~ $col = _ChooseColor (2)
    $col = 0x22B14C

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_Startup()

    [/autoit] [autoit][/autoit] [autoit]

    $Gui = GUICreate("")
    ;~ $Graphic = GUICtrlCreateGraphic(0, 0, 100, 32)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    ;~ $hDC = _WinAPI_GetDC(GUICtrlGetHandle($Graphic))
    ;~ ConsoleWrite($hDC & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    $hBitmap = _GDIPlus_BitmapCreateFromGraphics(100, 32, $hGraphic)
    $hBackbuffer = _GDIPlus_ImageGetGraphicsContext($hBitmap)

    [/autoit] [autoit][/autoit] [autoit]

    $hFontFamily = _GDIPlus_FontFamilyCreate("Arial")
    $hFont = _GDIPlus_FontCreate($hFontFamily, 20)
    $tLayout = _GDIPlus_RectFCreate(0, 0, 100, 32)
    $hFormat = _GDIPlus_StringFormatCreate()
    $hBrush = _GDIPlus_BrushCreateSolid(0xff000000 + $col)

    [/autoit] [autoit][/autoit] [autoit]

    For $x = 0 To 9
    _GDIPlus_GraphicsFillRect($hBackbuffer, 0, 0, 90, 32)
    _GDIPlus_GraphicsDrawStringEx($hBackbuffer, AddZero($x, 5), $hFont, $tLayout, $hFormat, $hBrush)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, 100, 32)
    $ret = _GDIPlus_ImageSaveToFile($hBitmap, @ScriptDir & "\1\" & $x & ".bmp")

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite($ret & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(10)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Until GUIGetMsg() = -3

    [/autoit] [autoit][/autoit] [autoit]

    Func AddZero($nZahl, $EndLen)
    While 1
    If StringLen($nZahl) >= $EndLen Then
    Return $nZahl
    Else
    $nZahl = "0" & $nZahl
    EndIf
    WEnd
    EndFunc ;==>AddZero

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_FontFamilyDispose($hFontFamily)
    _GDIPlus_FontDispose($hFont)
    _GDIPlus_StringFormatDispose($hFormat)
    _GDIPlus_BrushDispose($hBrush)

    [/autoit] [autoit][/autoit] [autoit]

    _GDIPlus_BitmapDispose($hBitmap)
    _GDIPlus_GraphicsDispose($hBackbuffer)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_Shutdown()

    [/autoit]

    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯