Frage zu GDI+ (Transparentes GUI / Bild auf Desktop)

  • Hi.
    Ich wollte mal was mit GDI+ ausprobieren.
    Dazu habe ich diesen Script zum testen im Forum gefunden:

    [autoit]

    #include <GuiConstants.au3>
    #include <GdiPlus.au3>

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

    OnAutoItExitRegister("_end")

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

    $Gui = GUICreate("Beispiel", 179, 163, 100,100)
    GUISetState(@SW_SHOW)

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

    _GDIPlus_Startup()

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

    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($Gui) ; erstellt eine Graphic aus dem Fenster $Gui
    $hImage = _GDIPlus_ImageLoadFromFile(@ScriptDir & "\Target.gif") ; Lädt das Bild Image.gif aus dem ScriptDir Ordner
    _GDIPlus_GraphicsDrawImage($hGraphics, $hImage, 50, 50) ; Zeichnet das geladene Bild $hImage auf die Graphic $hGraphics mit den Kooardinaten $iX = 10 und $iY = 30

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Func _end();die Exit funktion
    _GDIPlus_GraphicsDispose($hGraphics)
    _GDIPlus_Shutdown()
    EndFunc

    [/autoit]


    Aber das Bild wird nicht angezeigt.
    Am liebsten wäre es mir aber, wenn das Bild dann noch direkt auf dem Desktop gezeichnet wird.
    Das Bild selber ist relativ unspektakulär. Ein einfaches rotes X.

    PS: Funktioniert GDI+ auch mit Icons als Format?

    mfg Taliis

    2 Mal editiert, zuletzt von Taliis (7. März 2012 um 16:32)

  • Also bei mir funktioniert es. Ist dein Bild wirklich im selben Ordner wo das Skript auch ist?

  • Das Bild war auf der falschen Partition.
    Im Prinzip ja: Falscher Pfad.

    Jetzt brauche ich das Bild nur noch auf dem Desktop.
    Da gab es doch irgend eine voreingestellte Variable.
    Sowas wie "$hTransparent" und dann sollte das GUI unsichtbar sein.

    Edit: Ok es war "$WS_EX_TRANSPARENT" Aber das muss noch deklariert werden, was aber doch sinnlos ist, wenn es schon Voreingestellt ist.
    WinSetTrans habe ich auch schon getestet, aber dann wird auch das Bild unsichtbar.

    Edit2:
    Glaube ich habe eine Lösung.
    (Komisch, dass Google einen erst nach dem Posten eines Beitrages zum richtigen Ergebnis führt... )

    Mit _WinAPI_GetDesktopWindow , _WinAPI_GetWindowDC und _GDIPlus_GraphicsCreateFromHDC scheint es recht gut zu klappen =D

    3 Mal editiert, zuletzt von Taliis (7. März 2012 um 16:32)