Functions > GraphicSound >


PixelSearch

Recherche dans un rectangle de pixels, un pixel de couleur donnée.

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

Paramètres

left Coordonnée X du coin supérieur gauche du rectangle.
top Coordonnée Y du coin supérieur gauche du rectangle.
right Coordonnée X du coin inférieur droit du rectangle.
bottom Coordonnée Y du coin inférieur droit du rectangle.
color Valeur de la couleur de pixel à rechercher (en décimal ou hexadécimal).
shade-variation [optionnel] Un nombre entre 0 et 255 qui indique la variation de nuance autorisée pour les composantes rouge, verte et bleue de la couleur. Par défaut 0 (correspondance exacte).
step [optionnel] Au lieu de chercher chaque pixel, utilisez une valeur supérieure à 1 pour sauter des pixels (pour augmenter la vitesse). Par exemple : Une valeur de 2 va seulement vérifier un pixel sur deux. Par défaut c'est 1. Il n'est pas recommandé d'utiliser une valeur du pas supérieure à 1.
hwnd [optionnel] Handle de la fenêtre à utiliser. Par défaut, la fenêtre du bureau.

Valeur de retour

Succès: Retourne un tableau à deux éléments, des coordonnées du pixel.
    [0] = Coordonnée X.
    [1] = Coordonnée Y.
Échec: Définit @error = 1 si la couleur n'est pas trouvée.

Remarques

La direction de la recherche varie de la façon suivante:
    De gauche à droite si left < right
    De droite à gauche si right < left
    De haut en bas si top < bottom
    De bas en haut si bottom < top

Changer la direction de recherche peut être une optimisation utile si la couleur recherchée apparaît fréquemment dans une zone spécifique de la zone de recherche. La recherche sera réduite, si elle débute dans la zone la plus courante.

N'oubliez pas qu'un affichage en 1024 x 768 contient 786432 pixels. Bien que PixelSearch() soit optimisé, la réduction de la zone de recherche permet d'accélérer le résultat.

En relation

PixelChecksum, PixelCoordMode (Option), PixelGetColor

Exemple

#include <MsgBoxConstants.au3>

; Trouve un pixel rouge pur dans la zone (0,0)-(20,300)
Local $aCoord = PixelSearch(0, 0, 20, 300, 0xFF0000)
If Not @error Then
    MsgBox($MB_SYSTEMMODAL, "", "X et Y sont: " & $aCoord[0] & "," & $aCoord[1])
EndIf

; Trouve un pixel rouge pur ou un pixel rouge dans une variation de 10 coloris de rouge
$aCoord = PixelSearch(0, 0, 20, 300, 0xFF0000, 10)
If Not @error Then
    MsgBox($MB_SYSTEMMODAL, "", "X et Y sont: " & $aCoord[0] & "," & $aCoord[1])
EndIf