[R] Pixelsearch, changer les valeurs
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Pixelsearch, changer les valeurs
Bonjour, j'utilise la fonction Pixelsearch dans une de mes applications, mais parfois elle se "bloque", ce que je veux dire c'est que la position qu'elle retourne n'est pas bonne (une sorte d'erreur de recherche, un faux-positif en quelque sorte). J'aimerai qu'à chaque fois que la fonction Pixelsearch est appelée elle renvoie une valeur différente de la précédente. En gros, ça revient à créer une valeur interdite.
Je sais que c'est un peu compliqué, si vous avez besoins d'autres informations je peux y répondre.
Je sais que c'est un peu compliqué, si vous avez besoins d'autres informations je peux y répondre.
Modifié en dernier par Thibault le lun. 24 août 2009 17:50, modifié 1 fois.
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..]Pixelsearch, changer les valeurs
La fonction PixelSearch recherche dans une zone. Vous ne pouvez exclure un ou plusieurs pixels de cette zone.
Si c'est bien ce que vous voulez faire, il vous faudra créer votre propre fonction.
Pour cela vous aurez besoin de la commande PixelGetColor().
Il vous faudra aussi créer une sorte de boucle qui 'scannera' chaque pixel de la zone définie.
Et pour finir, il vous faudra aussi stocker les coordonnées de chaque valeur positive afin de ne pas tenir compte des valeurs déjà retournées.
Bon courage.
Si c'est bien ce que vous voulez faire, il vous faudra créer votre propre fonction.
Pour cela vous aurez besoin de la commande PixelGetColor().
Il vous faudra aussi créer une sorte de boucle qui 'scannera' chaque pixel de la zone définie.
Et pour finir, il vous faudra aussi stocker les coordonnées de chaque valeur positive afin de ne pas tenir compte des valeurs déjà retournées.
Bon courage.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Pixelsearch, changer les valeurs
Je conseil plutot un pixelsearch() plus dirigé, Si il s'agit de virer qu'un seul pixel, on peut s'en tirer avec 4 pixelsearch()
Je sais pas si c'est vraiment plus rapide, mais en tout cas, ce code devrait etre fonctionnel 
Edit voila un schéma, et meme que les axes sont pas inversées ^^
Code : Tout sélectionner
Func _PixelSearch($PasX,$PasY,$left, $top, $right, $bottom, $color, $shade_variation = 0, $step = 1, $hwnd = "")
$return = PixelSearch($left,$top,$right,$PasY-1,$color, $shade_variation = 0, $step = 1, $hwnd = "")
If Not @error Then Return $return
$return = PixelSearch($left,$PasY,$PasX-1,$PasY, $color, $shade_variation = 0, $step = 1, $hwnd = "")
If Not @error Then Return $return
$return = PixelSearch($PasX+1,$PasY,$right,$PasY, $color, $shade_variation = 0, $step = 1, $hwnd = "")
If Not @error Then Return $return
$return = PixelSearch($left,$PasY+1,$right,$bottom,$color, $shade_variation = 0, $step = 1, $hwnd = "")
If Not @error Then Return $return
Return SetError(1,0,0)
EndFuncEdit voila un schéma, et meme que les axes sont pas inversées ^^
Signez ici
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Pixelsearch, changer les valeurs
Pas très adapté pour l'exclusion de multiple pixels.
D'après ce qu'il dit, Thibault veut exclure chaque pixel positif déjà retourné. Donc le nombre va vite augmenté et votre solution va vite devenir compliquée.
D'après ce qu'il dit, Thibault veut exclure chaque pixel positif déjà retourné. Donc le nombre va vite augmenté et votre solution va vite devenir compliquée.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Pixelsearch, changer les valeurs
Excusez-moi, je ne vous ai pas donner assez de détails. Ma recherche de pixel fait partie d'une boucle, et cette boucle contient deux fois la fonction pixelsearch. Ce que je souhaite, c'est que le second pixelsearch ne renvoi pas les même résultats que la première.
Re: [..] Pixelsearch, changer les valeurs
La fonction PixelSearch est très délicate. Une fois ton 1er PixelSearch effectué tu pourra effectué ton 2eme PixelSearch en fonction de la position du 1er Pixel trouvé précédemment, par contre il faudra beaucoup bidouiller si tu veux ratisser entièrement la zone. Ex :Thibault a écrit :Excusez-moi, je ne vous ai pas donner assez de détails. Ma recherche de pixel fait partie d'une boucle, et cette boucle contient deux fois la fonction pixelsearch. Ce que je souhaite, c'est que le second pixelsearch ne renvoi pas les même résultats que la première.
Code : Tout sélectionner
Do
$1erPS = PixelSearch($x1, $y1, $x2, $y2, $color)
Until $1erPS <> 1
$2erPS = PixelSearch($1erPS[0] + 1, $1erPS[1], $x2, $1erPS[1], $color)
If $2erPS = 1 Then
$3erPS = PixelSearch($x1, $1erPS[1] + 1, $x2, $y2, $color)
Endif
- Iste
- Niveau 11

- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] Pixelsearch, changer les valeurs
Ha ben, dans ce cas ma fonction est tres bien :p
Suffit de l'appeler en second, avec les valeur renvoyées par la 1erLe second pixelsearch() ignorera le 1er pixel trouvé
Suffit de l'appeler en second, avec les valeur renvoyées par la 1er
Code : Tout sélectionner
$result = PixelSearch(100,200,500,600,$color)
$result2 = _PixelSearch($result[0],$result[1],100,200,500,600,$color)
Func _PixelSearch($PasX,$PasY,$left, $top, $right, $bottom, $color, $shade_variation = 0, $step = 1, $hwnd = "")
$return = PixelSearch($left,$top,$right,$PasY-1,$color, $shade_variation = 0, $step = 1, $hwnd = "")
If Not @error Then Return $return
$return = PixelSearch($left,$PasY,$PasX-1,$PasY, $color, $shade_variation = 0, $step = 1, $hwnd = "")
If Not @error Then Return $return
$return = PixelSearch($PasX+1,$PasY,$right,$PasY, $color, $shade_variation = 0, $step = 1, $hwnd = "")
If Not @error Then Return $return
$return = PixelSearch($left,$PasY+1,$right,$bottom,$color, $shade_variation = 0, $step = 1, $hwnd = "")
If Not @error Then Return $return
Return SetError(1,0,0)
EndFuncSignez ici
Re: [..] Pixelsearch, changer les valeurs
Merci pour votre aide. Je ne maîtrise pas encore totalement les fonctions et les appels de fonctions donc il ne me reste plus qu'à travailler encore avant de bien comprendre vos exemples de codes.
Merci
Merci
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] Pixelsearch, changer les valeurs
Effectivement, la fonction de Iste semble toute indiquée dans le cas nouvellement exposé.
Cela dit, selon le type de recherche effectuée, il pourrait être possible de tout simplement déduire la coordonnée Y du second PixelSearch (si les coordonnées sont identiques).
Cela dit, selon le type de recherche effectuée, il pourrait être possible de tout simplement déduire la coordonnée Y du second PixelSearch (si les coordonnées sont identiques).
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".

