Hey,
und mal wieder Ich ;/
Leider komm ich an einem aktuellen Problem nicht weiter.
Ich erstelle einen Screenshot, danach leg ich ne GUI über den gesamten Bildschirm und lade dort das Bild.
Jetzt möchte ich sobald die linke Maustaste gedrückt und gehalten wird und weggezogen wird ein Viereck zeichnen, das funktioniert auch.
Das Viereck dient dazu die Koordinaten für ein Screenshot festzulegen.
Das Problem was ich jetzt habe, ich kann zwar das Viereck (Ich zeichne alle 4 linien einzeln) funktioniert zwar, aber das löschen des "alten" Vierecks nicht! Finde auch keine Befehle dafür.
Als letzten Versuch habe ich probiert in der Schleife das GDI+ zu starten und zu beenden, aber auch das löscht nicht zuversichtlich die letzten Vierecke
Spoiler anzeigen
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#include <ScreenCapture.au3>
#include <Misc.au3>
Opt("TrayIconDebug", 1)
[/autoit] [autoit][/autoit] [autoit]HotKeySet("{ESC}", "ende")
[/autoit] [autoit][/autoit] [autoit]Global $CaptureFile = "C:\test.bmp"
Global $Edit_Alt[2]
Global $line_x = 0
$Fenster = GUICreate("Test", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP)
_ScreenCapture_Capture($CaptureFile, 0, 0, -1, -1, 0)
GUICtrlCreatePic($CaptureFile, 0, 0, @DesktopWidth, @DesktopHeight)
[/autoit] [autoit][/autoit] [autoit]GUISetState()
$UserDLL = DllOpen("user32.dll")
While 1
If _IsPressed("01", $UserDLL) Then
Local $Start_Pos = MouseGetPos()
ExitLoop
EndIf
Sleep(100)
WEnd
While 1
[/autoit] [autoit][/autoit] [autoit]$Edit_Pos = MouseGetPos()
[/autoit] [autoit][/autoit] [autoit]_GDIPlus_Startup()
$Graphic = _GDIPlus_GraphicsCreateFromHWND($Fenster)
$Pinsel = _GDIPlus_PenCreate(0xFF000000, 4)
If $Edit_Pos[0] <> $Start_Pos[0] And $Edit_Pos[0] <> $Edit_Alt[0] Then
$line_x = _GDIPlus_GraphicsDrawLine($Graphic, $Start_Pos[0], $Start_Pos[1], $Edit_Pos[0], $Start_Pos[1], $Pinsel)
$line_x2 = _GDIPlus_GraphicsDrawLine($Graphic, $Start_Pos[0], $Edit_Pos[1], $Edit_Pos[0], $Edit_Pos[1], $Pinsel)
$Edit_Alt[0] = $Edit_Pos[0]
EndIf
If $Edit_Pos[1] <> $Start_Pos[1] And $Edit_Pos[1] <> $Edit_Alt[1] Then
$line_y = _GDIPlus_GraphicsDrawLine($Graphic, $Start_Pos[0], $Start_Pos[1], $Start_Pos[0], $Edit_Pos[1], $Pinsel)
$line_y2 = _GDIPlus_GraphicsDrawLine($Graphic, $Edit_Pos[0], $Start_Pos[1], $Edit_Pos[0], $Edit_Pos[1], $Pinsel)
$Edit_Alt[1] = $Edit_Pos[1]
EndIf
_GDIPlus_GraphicsDispose($Graphic)
_GDIPlus_Shutdown()
If Not _IsPressed("01", $UserDLL) Then
Local $End_Pos = MouseGetPos()
If $Start_Pos[0] < $End_Pos[0] Then
$left = $Start_Pos[0]
$right = $End_Pos[0]
Else
$left = $End_Pos[0]
$right = $Start_Pos[0]
EndIf
If $Start_Pos[1] < $End_Pos[1] Then
$top = $Start_Pos[1]
$bottom = $End_Pos[1]
Else
$top = $End_Pos[1]
$bottom = $Start_Pos[1]
EndIf
ExitLoop
EndIf
Sleep(100)
WEnd
Func ende()
Exit
EndFunc
Vllt hat ja jemand Erfahrung mit _GDI+ und dieser Problematik.
Gruß
Prajoss