Je me suis fait une petite fonction pour comparer les couleurs entres deux pixels affichés à l'écran avec une marge d'erreur paramétrable.
Elle s'utilise avec trois paramètres, le premier pour le premier pixel a comparer, le deuxième pour le deuxième pixel à comparer et le troisième c'est la marge d'erreur paramètrable entre 0 identique et 254 infiniment différent.
Voici la fonction:
Code : Tout sélectionner
Func Comparecouleurpixel ($pixel1, $pixel2, $difference)
;Transforme la couleur de pixel 1 en hexadecimal
$result1 = Hex($pixel1, 6)
;Extrait la couleur rouge en Hexa
$rougehexa1 = StringLeft($result1, 2)
;Extrait la couleur verte en Hexa
$verthexa1 = StringLeft(StringTrimLeft($result1, 2), 2)
;Extrait la couleur Bleu en Hexa
$bleuhexa1 = StringRight($result1, 2)
;Convertit les hexadimales en décimales
$rouge1 = Dec($rougehexa1)
$vert1 = Dec($verthexa1)
$bleu1 = Dec($bleuhexa1)
;Transforme la couleur de pixel 2 en hexadecimal
$result2 = Hex($pixel2, 6)
;Extrait la couleur rouge en Hexa
$rougehexa2 = StringLeft($result2, 2)
;Extrait la couleur verte en Hexa
$verthexa2 = StringLeft(StringTrimLeft($result2, 2), 2)
;Extrait la couleur Bleu en Hexa
$bleuhexa2 = StringRight($result2, 2)
;Convertit les hexadimales en décimales
$rouge2 = Dec($rougehexa2)
$vert2 = Dec($verthexa2)
$bleu2 = Dec($bleuhexa2)
;Fait la comparaison avec la difference (et passe les nombres negatifs en positifs)
$soustractionrouge = StringReplace($rouge1 - $rouge2, "-", "")
$soustractionvert = StringReplace($vert1 - $vert2, "-", "")
$soustractionbleu = StringReplace($bleu1 - $bleu2, "-", "")
If $soustractionrouge > $difference or $soustractionvert > $difference or $soustractionbleu > $difference Then
Return 1
Else
Return 0
EndIf
EndFunc
Code : Tout sélectionner
$testpixel1 = PixelGetColor(572 ,396, "[CLASS:Notepad]")
$testpixel2 = PixelGetColor(595 ,396, "[CLASS:Notepad]")
$test = Comparecouleurpixel($testpixel1, $testpixel2, 50)
MsgBox(0, "Si couleurs différentes =1 ou identiques = 0", $test)