Bild auf Desktop zeichnen

  • Moin ich wollte ein Bild in mein Programm einfliegen lassen, nur ich habe das Problem:
    Ich Zeichne ja im Prinzip immer Einzellbilder auf den Desktop und schon hab ich das Problem ich weiß nicht wie ich den destop immer wieder aktualisieren soll, denn die Einzellbilder bleiben ja immer da.

    hier mal das was ich ich hab.

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    #Include <GDIPlus.au3>
    #Include <ScreenCapture.au3>

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

    HotKeySet("{ESC}","_exit")

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

    Global $x, $y
    $x = 0
    $y = 0
    $xb = 0
    $yb = 0

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

    _GDIPlus_Startup()
    $win = _WinAPI_GetDesktopWindow()
    $hDC = _WinAPI_GetWindowDC(0) ; Gerätekontext (DC) des gesamten Bildschirms (Desktop)
    $GHandle = _GDIPlus_GraphicsCreateFromHDC($hDC)
    $hBitmap = _GDIPlus_BitmapCreateFromFile("Bilder\reiszwecke.ico")
    $screenhandle = _ScreenCapture_Capture()
    $screenhandle2 = _GDIPlus_BitmapCreateFromHBITMAP($screenhandle)

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

    For $i = 1 To 10
    _GDIPlus_GraphicsDrawImageRect($GHandle, $hBitmap, 500 +$x , 500 + $y, 100 + $xb, 100 + $yb)
    $x += 50
    $y += 50
    $xb -= 5
    $yb -= 5
    Sleep(100)
    Next

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

    _GDIPlus_GraphicsDispose($GHandle)
    _GDIPlus_Shutdown()
    _WinAPI_RedrawWindow($win, 0, 0, $RDW_INVALIDATE + $RDW_ALLCHILDREN);; damit hab ich es Probiert funzt aber nicht

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

    Func _exit()
    exit
    EndFunc

    [/autoit]

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • hii, guck dir mal foplgenden Befehl an:

    [autoit]

    SplashImageOn

    [/autoit]

    Oder nutz die SUFU nach demYoutube-Downloader von DjBlume. der ist auch immer vom Bildschirmrand eingeflogen

    p.s. wenn du vor 6Uhr nach 10minuten noch keine Antwort hast, brauchst du nciht in der Shoutbox nachfragen

  • Hey danke erst mal aber bringt mir ja überhaupt nix. ich möchte das ganze nicht in einem extra Fenster haben sondern direkt auf den Desktop zeichnen(wie ich oben schon gesagt hab)
    Nur hab ich eben probleme bei dem Aktualisiern, sodass das Bild wieder verschwindet(hab ich auch oben beschrieben)

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Man zeichnet nicht so einfach auf den Desktop!
    Das ist wie als ob du in der Schule bist, auf den Tisch malst, und dich dann wunderst, warum der Lehrer sagt, du sollst es wegmachen.

    Du musst ein Transparentes GUI erstellen, auf dem du zeichnest. Aber niemals auf den Desktop!
    https://autoit.de/index.php?page=Thread&amp;threadID=15293
    https://autoit.de/index.php?page=Thread&amp;threadID=18810

  • Ah ok erst mal thx.
    Aber leider ist das Scrip da groß und ich weiß nicht genau was das GUI transparen und waum es transparent wird.

    Ich denke mal das ist wohl der teil der das ganze mach oder

    ist daraus: https://autoit.de/index.php?page=Thread&amp;threadID=15293
    zweiter Spoiler

    Spoiler anzeigen
    [autoit]

    Opt("GUIOnEventMode", 1)
    $hwnd = GUICreate($title, $width, $height, -1, -1, 0, BitOR($WS_EX_LAYERED, $WS_EX_TOPMOST))
    GUISetOnEvent($GUI_EVENT_CLOSE, "Close")

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

    _GDIPlus_Startup()
    $graphics = _GDIPlus_GraphicsCreateFromHWND($hwnd)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics($width, $height, $graphics)
    $backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
    _GDIPlus_GraphicsSetSmoothingMode($backbuffer, 2)

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

    $ScreenDc = _WinAPI_GetDC($hWnd)
    $gdibitmap = _GDIPlus_BitmapCreateHBITMAPFromBitmap($bitmap)
    $dc = _WinAPI_CreateCompatibleDC($ScreenDc)
    _WinAPI_SelectObject($dc, $gdibitmap)
    ; _WinAPI_UpdateLayeredWindow parameters
    $tSize = DllStructCreate($tagSIZE)
    $pSize = DllStructGetPtr($tSize)
    DllStructSetData($tSize, "X", $width)
    DllStructSetData($tSize, "Y", $height)
    $tSource = DllStructCreate($tagPOINT)
    $pSource = DllStructGetPtr($tSource)
    $tBlend = DllStructCreate($tagBLENDFUNCTION)
    $pBlend = DllStructGetPtr($tBlend)
    Global $alpha = 200
    Global $alpha_steps = 5
    DllStructSetData($tBlend, "Alpha", $alpha)
    DllStructSetData($tBlend, "Format", 1)
    $tPoint = DllStructCreate($tagPOINT)
    $pPoint = DllStructGetPtr($tPoint)
    DllStructSetData($tPoint, "X", 0)
    DllStructSetData($tPoint, "Y", 0)

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

    GUISetState()

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


    Du als Meister für alles kannst mir doch mit sicherheit erklären, was was macht oder? :thumbup:

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Hier passt auch meine neuste Herausfindung :D

    [autoit]


    #include <GDIPlus.au3>
    $desktop=_WinAPI_GetDesktopWindow()
    $dc=_WinAPI_GetWindowDC($desktop)
    _GDIPlus_Startup()
    $grafik=_GDIPlus_GraphicsCreateFromHDC($dc)
    ;...
    ;Hier msust d dann mit _GDIPlus_GraphicsDrawImage das Bild zeichnen
    ;...

    [/autoit]


    Es könnte allerdings schwerer sein und flimmert