Durchsucht ein Rechteck von Pixeln nach einer vorgegebenen Farbe.
PixelSearch ( left, top, right, bottom, color [, shade-variation = 0 [, step = 1 [, hwnd]]] )
left | linke Koordinate des Rechtecks. |
top | obere Koordinate des Rechtecks. |
right | rechte Koordinate des Rechtecks. |
bottom | untere Koordinate des Rechtecks. |
color | Farbwert des zu suchenden Pixels (in dezimal oder hex). |
shade-variation | [optional] Eine Zahl zwischen 0 und 255, die die Anzahl erlaubter Schattierungsschwankungen der Rot-, Grün- und Blaukomponenten festlegt. Standard ist 0 (exakte Übereinstimmung). |
step | [optional] Anstatt jedes Pixel in die Prüfsumme einzubeziehen, kann man einen Wert größer als 1 verwenden um Pixel zu überspringen (schneller). z.B. wird ein Wert von 2 nur jedes zweite Pixel prüfen. Standard ist 1. Es wird nicht empfohlen, einen größeren Wert als 1 zu verwenden. |
hwnd | [optional] Handle des zu durchsuchenden Fensters. Standard ist der Desktop. Siehe Bemerkungen. |
Erfolg: | ein 2-Element-Array der Pixelkoordinaten. (Array[0] = x, Array[1] = y) |
Fehler: | Setzt @error auf 1, wenn die Farbe nicht gefunden wurde. |
Die Suchrichtung variiert wie folgt:
Links nach Rechts - links < rechts
rechts nach Links - rechts < links
Oben nach unten - oben < unten
Unten nach oben - unten < oben
Das Ändern der Suchrichtung kann eine sinnvolle Optimierung sein falls die zu suchende Farbe hauptsächlich in einem festgelegten Bereich des Suchbereichs auftaucht. Durch das starten der Suche in diesen Bereich wird die Suche schneller abgeschlossen sein.
Es ist zu bedenken, dass ein typisches 1024x768 Bild 786432 Pixel beinhaltet. Obwohl PixelSearch() optimiert wurde, erhöht das Einschränken des Suchbereichs die Geschwindigkeit erheblich.
Wenn PixelCoordMode auf den Standardmodus SCREEN (1) eingestellt ist, wird der Parameter hwnd ignoriert. Nur wenn PixelCoordMode auf WINDOW (0) oder CLIENT (2) eingestellt ist, wird er beachtet.
PixelChecksum, PixelCoordMode (Option), PixelGetColor
#include <MsgBoxConstants.au3>
; Findet ein rotes Pixel im Rechteck 0,0-200,300.
Local $aCoord = PixelSearch(0, 0, 200, 300, 0xFF0000)
If Not @error Then
MsgBox($MB_SYSTEMMODAL, "Die Koordinaten X und Y lauten:", $aCoord[0] & "," & $aCoord[1])
EndIf
; Findet ein rotes Pixel oder ein Pixel mit 100 Abstufungen (Variationen) von reinem Rot.
$aCoord = PixelSearch(0, 0, 200, 300, 0xFF0000, 100)
If Not @error Then
MsgBox($MB_SYSTEMMODAL, "Die Koordinaten X und Y lauten:", $aCoord[0] & "," & $aCoord[1])
EndIf