PixelSearch

Sucht in einem bestimmten Bildschirmbereich nach einem Pixel, das eine bestimmte Farbe hat.

PixelSearch &AusgabeVarX, &AusgabeVarY, X1, Y1, X2, Y2, FarbeID , Variation

Parameter

&AusgabeVarX, &AusgabeVarY

Typ: VarRef

Referenzen, die auf Ausgabevariablen verweisen, in denen die X- und Y-Koordinate des ersten Pixels, das die Farbe FarbeID hat, gespeichert werden sollen (wenn das Pixel nicht gefunden wird, werden diese Variablen leer gemacht). Standardmäßig sind Koordinaten relativ zum Clientbereich des aktiven Fensters, was aber mit CoordMode geändert werden kann.

X1, Y1

Typ: Integer

Die X- und Y-Koordinate einer Ecke des rechteckigen Suchbereichs, die den Startpunkt der Suche kennzeichnet. Standardmäßig sind Koordinaten relativ zum Clientbereich des aktiven Fensters, was aber mit CoordMode geändert werden kann.

X2, Y2

Typ: Integer

Die X- und Y-Koordinate einer Ecke des rechteckigen Suchbereichs, die den Endpunkt der Suche kennzeichnet. Standardmäßig sind Koordinaten relativ zum Clientbereich des aktiven Fensters, was aber mit CoordMode geändert werden kann.

FarbeID

Typ: Integer

Die ID der Farbe, nach der gesucht werden soll, was üblicherweise eine hexadezimale Zahl im Rot-Grün-Blau-Format (RGB) ist. Zum Beispiel: 0x9d6346. Farb-IDs können mit dem Tool "Window Spy" (erreichbar über das Tray-Menü) oder via PixelGetColor ermittelt werden.

Variation

Typ: Integer

Wenn weggelassen, wird standardmäßig 0 verwendet. Andernfalls geben Sie eine Zahl im Bereich von 0 bis 255 an, um die erlaubte Anzahl von Variationsnuancen in beide Richtungen für die Intensität der Rot-, Grün- und Blauanteile der Farbe zu bestimmen. Wenn z.B. 2 angegeben ist und FarbeID 0x444444 ist, wird jede Farbe von 0x424242 bis 0x464646 als Übereinstimmung angesehen. Dieser Parameter hilft bei variierenden Pixelfarben. Wenn Sie 255 Variationsnuancen angeben, werden alle Farben übereinstimmen.

Rückgabewert

Typ: Integer (boolesch)

Diese Funktion gibt 1 (true) zurück, wenn die Farbe im angegeben Bereich gefunden wurde, oder 0 (false), wenn sie nicht gefunden wurde.

Fehlerbehandlung

Es wird ein OSError ausgelöst, wenn ein Problem die Funktion daran gehindert hat, die Suche durchzuführen.

Bemerkungen

Der Suchbereich muss sichtbar sein, d.h. es ist nicht möglich, einen Bereich in einem Fenster zu durchsuchen, das hinter einem anderen Fenster verborgen ist. Dagegen werden Pixel unter dem Mauszeiger in der Regel erkannt. Eine Ausnahme bilden die Mauszeiger von Videospielen, die in den meisten Fällen alle darunter liegenden Pixel verdecken.

Obwohl Farbtiefen bis runter zu 8-Bit (256 Farben) unterstützt werden, ist PixelSearch bei 24-Bit- oder 32-Bit-Farben deutlich performanter.

PixelSearch startet bei den Koordinaten X1 und Y1 und sucht in der Zeile von X1 bis X2 nach einer Übereinstimmung. Wenn es keine Übereinstimmung findet, sucht es zeilenweise in Richtung Y2 weiter, bis es das Pixel gefunden hat.

Die Suchrichtung hängt von der Anordnung der Parameter ab. Mit anderen Worten: Wenn X1 größer als X2 ist, wird die Suche von rechts nach links durchgeführt, beginnend bei Spalte X1. Entsprechend wird, wenn Y1 größer als Y2 ist, die Suche von unten nach oben durchgeführt.

Wenn der Suchbereich groß ist und die Suche mit hoher Frequenz wiederholt wird, kann es zu einer hohen CPU-Belastung kommen. Um dem entgegenzuwirken, sollte die Größe des Suchbereichs auf ein Minimum beschränkt werden.

PixelGetColor, ImageSearch, CoordMode, MouseGetPos

Beispiele

Sucht in einem bestimmten Bereich des aktiven Fensters nach einem Pixel und setzt Px und Py auf die X- und Y-Koordinate des ersten Pixels, das mit der angegebenen Farbe innerhalb von 3 Variationsnuancen übereinstimmt.

if PixelSearch(&Px, &Py, 200, 200, 300, 300, 0x9d6346, 3)
    MsgBox "Eine Farbe innerhalb von 3 Variationsnuancen wurde auf X" Px " Y" Py " gefunden."
else
    MsgBox "Die Farbe konnte im angegebenen Bereich nicht gefunden werden."