Hi Tweaky,
ich habe mal ein wenig herumprobiert ...
SplashTextOn ist in zu vielen Schleifen und wird jedesmal neu gezeichnet.
Ich habe das Flimmern etwas herausbekommen, zumindest bei der Lupe ... ![]()
Spoiler anzeigen
;*********************************************
; Auswahlbereich anzuzeigen *
;*********************************************
Func draw_label()
Local $User1DLL = DllOpen("user32.dll")
Local $MouseCoordMode, $Start_Pos1, $Ausschnitt, $Mouse_Pos
$Ausschnitt = GUICtrlCreateLabel('', 0, 0, 1, 1, $SS_SUNKEN)
GUICtrlSetBkColor($Ausschnitt, 0)
$MouseCoordMode = Opt('MouseCoordMode', 2)
$Start_Pos1 = MouseGetPos()
Local $Pos_Lupe = MouseGetPos()
Local $Pos_Screen = ToolTip("X-Pos.: " & $Pos_Lupe[0] & @LF & "Y-Pos.: " & $Pos_Lupe[1] & @LF & "Breite: " & $Pos_Lupe[0] - $Start_Pos1[0] & @LF & "Höhe: " & $Pos_Lupe[1] - $Start_Pos1[1], $Pos_Lupe[0] + 20, $Pos_Lupe[1] + 120)
Local $Lupe = SplashTextOn("Lupe", "", 100, 100, $Pos_Lupe[0] + 20, $Pos_Lupe[1] + 20, 1)
Global $MyhWnd = WinGetHandle("Lupe")
While 1
While _IsPressed("01", $User1DLL)
$Mouse_Pos = MouseGetPos()
$Pos_Lupe = MouseGetPos()
Lupe()
;links oben nach rechts unten:
If $Mouse_Pos[1] > $Start_Pos1[1] And $Mouse_Pos[0] > $Start_Pos1[0] Then
GUICtrlSetPos($Ausschnitt, $Start_Pos1[0], $Start_Pos1[1], $Mouse_Pos[0] - $Start_Pos1[0], $Mouse_Pos[1] - $Start_Pos1[1])
Sleep(10)
EndIf
;links unten nach rechts oben:
If $Mouse_Pos[1] < $Start_Pos1[1] And $Mouse_Pos[0] > $Start_Pos1[0] Then
GUICtrlSetPos($Ausschnitt, $Start_Pos1[0], $Mouse_Pos[1], $Mouse_Pos[0] - $Start_Pos1[0], $Start_Pos1[1] - $Mouse_Pos[1])
Sleep(10)
EndIf
;rechts oben nach links unten:
If $Mouse_Pos[1] > $Start_Pos1[1] And $Mouse_Pos[0] < $Start_Pos1[0] Then
GUICtrlSetPos($Ausschnitt, $Mouse_Pos[0], $Start_Pos1[1], $Start_Pos1[0] - $Mouse_Pos[0], $Mouse_Pos[1] - $Start_Pos1[1])
Sleep(10)
EndIf
;rechts unten nach links oben:
If $Mouse_Pos[1] < $Start_Pos1[1] And $Mouse_Pos[0] < $Start_Pos1[0] Then
GUICtrlSetPos($Ausschnitt, $Mouse_Pos[0], $Mouse_Pos[1], $Start_Pos1[0] - $Mouse_Pos[0], $Start_Pos1[1] - $Mouse_Pos[1])
Sleep(10)
EndIf
WEnd
Opt('MouseCoordMode', $MouseCoordMode)
Return $Ausschnitt
Sleep(10)
WEnd
DllClose($User1DLL)
EndFunc ;==>draw_label()
Gruß
Greenhorn