Hallo
Ich suche eine Möglichst schnelle IsInRect Funktion.
Hab selbst schon etwas daran gebastelt, aber leider werdens bei mir immer ziemlich viele If Abfragen.
Ich Suche eine Lösung am Besten OHNE If Abfragen.
Wer jetzt kommt: Man kann das alles zusammenfassen und mit And verbinden. Das weiß ich schon. Das ist der Übersicht halber so gemacht.
Variablen sind 2 Arrays.
[0] = X1
[1] = Y1
[2] = Breite1
[3] = Hoehe2
und beim Zweiten genauso.
Es sieht so aus, dass das eine Rechteck wesentlich größer ist als das andere.
Zurzeit hab ich Folgendes
[autoit]Opt('GUIOnEventMode', 1)
Global $hGUI = GUICreate('Test', 600, 600)
GUISetOnEvent(-3, '_Exit')
GUICtrlCreateLabel('', 100, 100, 300, 400)
GUICtrlSetBkColor(-1, 0x555555)
$hLabel = GUICtrlCreateLabel('', 0,0, 20, 40)
GUICtrlSetBkColor(-1, 0xFF5555)
Global $aPos = MouseGetPos()
[/autoit][autoit][/autoit][autoit]Local $Rect1[4] = [100,100,300,400]
Local $Rect2[4] = [$aPos[0],$aPos[1],20,40]
Local $Timer
GUISetState(@SW_SHOW, $hGUI)
[/autoit][autoit][/autoit][autoit]While Sleep(10)
$aPos = GUIGetCursorInfo($hGUI)
GUICtrlSetPos($hLabel, $aPos[0], $aPos[1])
$Rect2[0] = $aPos[0]
$Rect2[1] = $aPos[1]
$Timer = TimerInit()
_IsInRect($Rect1, $Rect2)
ToolTip(TimerDiff($Timer))
$Timer = TimerInit()
WEnd
[/autoit][autoit][/autoit][autoit]Func _IsInRect($R1, $R2)
If $R2[0] + $R2[2] > $R1[0] Then
If $R2[1] + $R2[3] > $R1[1] Then
If $R2[0] < $R1[0] + $R1[2] Then
If $R2[1] < $R1[1] + $R1[3] Then
Return 1
EndIf
EndIf
EndIf
EndIf
EndFunc
Func _Exit()
Exit
EndFunc
Viel Spaß beim Knobeln
Mars(i)
//Edit:. Danke für Jede Minute Mühe die Investiert wurde um das Problem zu Lösen. So Wie es aussieht funktioniert es mit der ReturnVariante2 (die mit den beiden Arrays) am besten. .://