Hi,
ich habe folgendes Skript
Spoiler anzeigen
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <ScreenCapture.au3>
#include <WindowsConstants.au3>
HotKeySet("{F1}", "_shoot")
[/autoit] [autoit][/autoit] [autoit]Opt('GUIOnEventMode', 1)
GUIRegisterMsg($WM_PAINT, 'WM_PAINT')
_GDIPlus_Startup() ;Vorschau
Global $iPreviewMaxDim = 200, $hPreviewBitmap, $iPreviewWidth, $iPreviewHeight
Global $hPreviewGui = GUICreate('Vorschau-Fenster', $iPreviewMaxDim, $iPreviewMaxDim + 24, -1, -1)
Global $hPreviewGraphic = _GDIPlus_GraphicsCreateFromHWND($hPreviewGui)
GUISetState(@SW_SHOW, $hPreviewGui)
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
$datei = @TempDir & "\" & "test.jpg"
_ScreenCapture_Capture($datei, 0, 0, 100, 100)
_PreviewLoadImage($datei)
While 1
Sleep(10)
WEnd
Func _end()
_GDIPlus_BitmapDispose($hPreviewBitmap)
_GDIPlus_GraphicsDispose($hPreviewGraphic)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_end
Func _PreviewLoadImage($sImgFile)
$hPreviewBitmap = _GDIPlus_BitmapCreateFromFile($sImgFile)
If $hPreviewBitmap = 0 Then
_GDIPlus_GraphicsFillRect($hPreviewGraphic, 0, 0, $iPreviewMaxDim, $iPreviewMaxDim)
Return
EndIf
$iPreviewWidth = _GDIPlus_ImageGetWidth($hPreviewBitmap)
$iPreviewHeight = _GDIPlus_ImageGetHeight($hPreviewBitmap)
$hMatrix = _GDIPlus_MatrixCreate()
_GDIPlus_MatrixTranslate($hMatrix, 200, 0)
_GDIPlus_MatrixRotate($hMatrix, 90, "False")
_GDIPlus_GraphicsSetTransform($hPreviewGraphic, $hMatrix)
_GDIPlus_GraphicsClear($hPreviewGraphic)
_GDIPlus_GraphicsDrawImage($hPreviewGraphic, $sImgFile, -$iPreviewWidth / 2, -$iPreviewHeight / 2)
$iVector = $iPreviewWidth / $iPreviewHeight
If $iVector > 1 Then
$iPreviewWidth = $iPreviewMaxDim
$iPreviewHeight = Int($iPreviewWidth / $iVector)
Else
$iPreviewHeight = $iPreviewMaxDim
$iPreviewWidth = Int($iPreviewHeight * $iVector)
EndIf
$hBrush = _GDIPlus_BrushCreateSolid(0xFFEBCD)
$hBrush = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
$hBrush = _GDIPlus_BrushCreateSolid(0xFF8EB8FD) ;Hintergrundfarbe
_GDIPlus_GraphicsFillRect($hPreviewGraphic, 0, 0, $iPreviewMaxDim, $iPreviewMaxDim, $hBrush)
_GDIPlus_GraphicsDrawImageRect($hPreviewGraphic, $hPreviewBitmap, ($iPreviewMaxDim - $iPreviewWidth) / 2, ($iPreviewMaxDim - $iPreviewHeight) / 2, $iPreviewWidth, $iPreviewHeight)
EndFunc ;==>_PreviewLoadImage
Func WM_PAINT($hWnd, $Msg, $wParam, $lParam)
If $hWnd = $hPreviewGui Then
_GDIPlus_GraphicsDrawImageRect($hPreviewGraphic, $hPreviewBitmap, ($iPreviewMaxDim - $iPreviewWidth) / 2, ($iPreviewMaxDim - $iPreviewHeight) / 2, $iPreviewWidth, $iPreviewHeight)
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_PAINT
Func _shoot()
$datei2 = @TempDir & "\" & "test2.jpg"
_ScreenCapture_Capture($datei2, 400, 400, 500, 500)
_PreviewLoadImage($datei2)
EndFunc ;==>_shoot
Wenn ich die GUI minimiere und dann wieder hervorhole, ist das Bild nicht mehr sichtbar.
Wie kann man dies beheben?
Außerdem will ich während die GUI minimiert ist mit "F1" das Bild ändern. Jedoch ist auch dann nach dem hervorholen der GUI kein Bild da.
Wie kann man dies beheben?
Danke