Wie Bildschirmausdruck in einem GUI anzeigen lassen ???

  • Hallo Leute.

    Folgendes Problem:
    ich möchte den aktuellen Bildschirmausdruck in einer GUI anzeigen lassen, als hätte man die "Druck"-Taste gedrückt und das Bild in Paint eingefügt.

    Mit dem Unterschied, dass das Bild um die Hälfte verkleinert werden sollte.

    Geht sowas überhaupt?

    Gruß. ;)

    Einmal editiert, zuletzt von hexpirator (12. Januar 2012 um 09:36)

  • So in der Art?

    [autoit]


    #include <ScreenCapture.au3>
    GUICreate('',@DesktopWidth/2,@DesktopHeight/2)
    $screen=_ScreenCapture_Capture()
    _ScreenCapture_SaveImage(@tempdir&'\screen.jpg',$screen)
    GUICtrlCreatePic(@tempdir&'\screen.jpg',0,0,@DesktopWidth/2,@DesktopHeight/2)
    GUISetState()
    While 1
    $msg=GUIGetMsg()
    if $msg=-3 then Exit
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
  • In meiner Hilfe steht das gleiche. Unfassbar! :D

    Das Problem ist nur, dass wenn ich die Dateiendung auf .PNG ändere, nichts angezeigt wird.
    Fehlt mir vielleicht irgendein Plugin?

    Gruß

  • Wie wäre es mal die Hilfe auch Richtig zu Lesen? , PNG's können nicht mit GUICtrlCreatePic angezeigt werden sondern mit GDI+ steht alles i der Hilfe
    Zitat : "PNG can be used with GDI+. See example 3."

    und dazu dass Example

    Spoiler anzeigen
    [autoit]

    ;----- example 3 PNG work araund by Zedna
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #Include <WinAPI.au3>

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

    Global $hGUI, $hImage, $hGraphic, $hImage1

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

    ; Create GUI
    $hGUI = GUICreate("Show PNG", 250, 250)

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

    ; Load PNG image
    _GDIPlus_StartUp()
    $hImage = _GDIPlus_ImageLoadFromFile("..\GUI\Torus.png")
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)

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

    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
    GUISetState()

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

    ; Loop until user exits
    do
    until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    ; Clean up resources
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_ShutDown()

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

    ; Draw PNG image
    Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 0, 0)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
    • Offizieller Beitrag

    Wozu als Datei speichern?
    Es soll doch nur in der GUI angezeigt werden.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GDIPlus.au3>
    #include <ScreenCapture.au3>

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

    _Main()

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

    Func _Main()
    Local $hGUI, $hBMP, $hBitmap, $hGraphic
    $hBMP = _ScreenCapture_Capture("", 0, 0, @DesktopWidth, @DesktopHeight)

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

    ; Create GUI
    $hGUI = GUICreate("Screenshot", @DesktopWidth / 2, @DesktopHeight / 2)
    GUISetState()

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

    ; Initialize GDI+ library
    _GDIPlus_Startup()

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

    ; Draw bitmap to GUI
    $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBMP)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, @DesktopWidth / 2, @DesktopHeight / 2)

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

    ; Clean up resources
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_BitmapDispose($hBitmap)
    _WinAPI_DeleteObject($hBMP)

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

    ; Shut down GDI+ library
    _GDIPlus_Shutdown()

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    EndFunc ;==>_Main

    [/autoit]