GDI + GUI nicht sichtbar Problem

  • Hallo,

    ich habe gerade das Problem, dass bei mir die GUI nicht mehr sichtbar ist, nachdem ich GDI + verwendet haben.

    Eigtl möchte ich nur, dass "Background.png" als Hintergrund mit der GuiCtrlPic.au3 geladen wird ( erfolgreich ) , "StringLine.png" in die weiße Fläche von Background.png gezeichnet und darauf mit GDI + ständig ein neuer String zeichnet wird.

    Könnte mir mal bitte jemand sagen, was ich falsch gemacht habe und evtl sagen, was von den GDI + Befehlen dafür überflüssig ist?

    Skript :

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <GuiCtrlPic.au3>
    _GDIPlus_Startup()
    $GUI = GUICreate("Form1", 400, 400, 192, 124)
    $ColorClear = "0xFFFFFFFF"
    $Background = _GUICtrlPic_Create("Background.png",0,0)
    $GrafikGen = _GDIPlus_GraphicsCreateFromHWND($GUI)
    $BitmapGen = _GDIPlus_BitmapCreateFromGraphics($GrafikGen,214,47)
    $Buffer = _GDIPlus_ImageGetGraphicsContext($BitmapGen)
    $PicForString = _GDIPlus_ImageLoadFromFile("StringLine.png")
    _GDIPlus_GraphicsClear($Buffer, $ColorClear)
    _GDIPlus_GraphicsDrawString($Buffer, "Überprüfen von Test1.bat", 70, 200)
    _GDIPlus_GraphicsDrawImage($GrafikGen, $BitmapGen, 200, 200)
    GUISetState(@SW_SHOW)
    $i = 1
    While 1
    _GDIPlus_GraphicsClear($Buffer, $ColorClear)
    _GDIPlus_GraphicsDrawString($Buffer, "Test" & $i, 30, 50)
    _GDIPlus_GraphicsDrawImage($GrafikGen, $BitmapGen, 0, 0)
    $i += 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_GraphicsDispose($Buffer)
    _GDIPlus_BitmapDispose($BitmapGen)
    _GDIPlus_GraphicsDispose($GrafikGen)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    WEnd

    [/autoit]

    Mit freundlichen Grüßen,

    Julien

    Einmal editiert, zuletzt von Julien (2. März 2012 um 21:00)

  • Eher ungern, da auf die GUI nachher noch viele Buttons kommen werden mit Hover und Presseffekt und ich für diesen Befehl die passende UDF habe, sodass ich es dann viel einfacher habe als mit GDI +

  • Ich habs mir mal angeguckt ( also getestet ) und du hast bei dem Bitmap erstellen die Parameter vertauscht:

    Richtiges Script

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <GuiCtrlPic.au3>
    _GDIPlus_Startup()
    $GUI = GUICreate("Form1", 400, 400, 192, 124)
    $ColorClear = "0xFFFFFFFF"
    $Background = _GUICtrlPic_Create("Background.png",0,0)
    $GrafikGen = _GDIPlus_GraphicsCreateFromHWND($GUI)
    $BitmapGen = _GDIPlus_BitmapCreateFromGraphics(214, 47, $GrafikGen) ; HIER LAG DER FEHLER!!!!
    $Buffer = _GDIPlus_ImageGetGraphicsContext($BitmapGen)
    $PicForString = _GDIPlus_ImageLoadFromFile("StringLine.png")
    _GDIPlus_GraphicsClear($Buffer, $ColorClear)
    _GDIPlus_GraphicsDrawString($Buffer, "Überprüfen von Test1.bat", 70, 200)
    _GDIPlus_GraphicsDrawImage($GrafikGen, $BitmapGen, 200, 200)
    GUISetState(@SW_SHOW)
    $i = 1
    While 1
    _GDIPlus_GraphicsClear($Buffer, $ColorClear)
    _GDIPlus_GraphicsDrawString($Buffer, "Test" & $i, 30, 50)
    _GDIPlus_GraphicsDrawImage($GrafikGen, $BitmapGen, 0, 0)
    $i += 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    _GDIPlus_GraphicsDispose($Buffer)
    _GDIPlus_BitmapDispose($BitmapGen)
    _GDIPlus_GraphicsDispose($GrafikGen)
    _GDIPlus_Shutdown()
    Exit
    EndSwitch
    WEnd

    bei mir gibts nu keinen Error mehr, musst ma testen.

    mfg
    Hauke