Funktionsreferenz

PixelSearch

Durchsucht ein Rechteck von Pixeln nach einer vorgegebenen Farbe.

PixelSearch ( left, top, right, bottom, color [, shade-variation [, step [, hwnd]]] )

 

Parameter

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.
hwnd [optional] Handle des zu durchsuchenden Fensters

 

Rückgabewert

Erfolg: Gibt ein 2-Element-Array der Pixelkoordinaten zurück. (Array[0] = x, Array[1] = y)
Fehler: Setzt @error auf 1, wenn die Farbe nicht gefunden wurde.

 

Bemerkungen

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.

 

Verwandte Funktionen

PixelChecksum, PixelGetColor, PixelCoordMode (Option)

 

Beispiel


; Findet ein rotes Pixel im Rechteck 0,0-200,300.
$coord = PixelSearch( 0, 0, 200, 300, 0xFF0000 )
If Not @error Then
    MsgBox(0, "Die Koordinaten X und Y lauten:", $coord[0] & "," & $coord[1])
EndIf


; Findet ein rotes Pixel oder ein Pixel mit 100 Abstufungen (Variationen) von reinem Rot.
$coord = PixelSearch( 0, 0, 200, 300, 0xFF0000, 100 )
If Not @error Then
    MsgBox(0, "Die Koordinaten X und Y lauten:", $coord[0] & "," & $coord[1])
EndIf