pixelgetcolor sur une image

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
littlechiki
Niveau 3
Niveau 3
Messages : 41
Enregistré le : sam. 13 avr. 2019 12:58
Status : Hors ligne

pixelgetcolor sur une image

#1

Message par littlechiki » lun. 05 août 2019 19:35

Bonjour,
J'ai un léger problème étant que quand j'utilise un PixelGetColor, celui-ci ne reconnais pas les images sur ma GUI. j'ai une image en position 500,500 de couleur blanche mais quand je fait un PixelGetColor, j'ai l'impression qu'il ne reconnait pas l'image et prend ce qu'il y a derrière.
Un petit exemple pour être plus claire :
#Include <GUIConstantsEx.au3>
$GUI = GUICreate("",1100,1000,350,10)
$image = GUICtrlCreatePic(".\0.gif",500,500,100,100)
$button = GUICtrlCreateButton("Couleur",10,90,70,30)
GUISetState(@SW_SHOW)
While 1
        Switch GuiGetMsg()
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $button
                        $pix = PixelGetColor(530,530)
                MsgBox(0,"","Couleur : " & Hex($pix))
        EndSwitch
WEnd
Voila. Le code hexadécimal de la couleur trouve du gris clair (la couleur de base de ma gui plutôt que la couleur de mon image. J'aimerai que le PixelGetColor trouve la couleur de l'image plutôt que la couleur du fond.
Si quelqu'un a une idée je le remercie !

Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 1820
Enregistré le : mar. 22 juil. 2008 20:55
Localisation : Nantes
Status : Hors ligne

Re: pixelgetcolor sur une image

#2

Message par TommyDDR » lun. 05 août 2019 21:23

Sans votre gif, il sera difficile de tester.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

littlechiki
Niveau 3
Niveau 3
Messages : 41
Enregistré le : sam. 13 avr. 2019 12:58
Status : Hors ligne

Re: pixelgetcolor sur une image

#3

Message par littlechiki » mar. 06 août 2019 11:03

Ah oui en effet je n'avais pas pensé à ça. la voici !
0.gif
0.gif (944 Octets) Vu 1293 fois
0.gif
0.gif (944 Octets) Vu 1293 fois

jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2097
Enregistré le : lun. 30 mars 2009 21:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: pixelgetcolor sur une image

#4

Message par jchd » mar. 06 août 2019 14:52

Code : Tout sélectionner

$pix = PixelGetColor(530,530)
L'image fait 30x30, donc ce pixel est hors de l'image. Le dernier pixel de l'image (en bas à droite), c'est 529,529.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.

littlechiki
Niveau 3
Niveau 3
Messages : 41
Enregistré le : sam. 13 avr. 2019 12:58
Status : Hors ligne

Re: pixelgetcolor sur une image

#5

Message par littlechiki » mar. 06 août 2019 17:03

Ah d'accord je corrigerai mes longueurs. Cependant même en changeant les longueurs pour (529,529) ou même (505,505) le problème subsiste et mon code couleur ne change pas. Même en changeant la taille de l'image pour qu'elle fasse 30x30. Je dois admettre que je ne comprend pas là...

littlechiki
Niveau 3
Niveau 3
Messages : 41
Enregistré le : sam. 13 avr. 2019 12:58
Status : Hors ligne

Re: pixelgetcolor sur une image

#6

Message par littlechiki » mar. 06 août 2019 18:01

Bon j'ai compris d'où venait mon erreur. En fait mes dimensions x et y n'étaient pas bonnes. Je cherchais en position 500,500 alors que j'aurais du chercher aux positions (855,545) qui sont les dimensions affichées sur mon écran. maintenant, pour faire bien, il faudrait que je sache rechercher le pixel seulement dans l'écran de la GUI et non pas sur mon écran entier. Chose que je ne comprend pas comment faire puisque en en utilisant le code

Code : Tout sélectionner

$pix = PixelGetColor(530,530,$GUI)
Il me donne quand même les les dimensions de l'écran complet et non de la GUI.

littlechiki
Niveau 3
Niveau 3
Messages : 41
Enregistré le : sam. 13 avr. 2019 12:58
Status : Hors ligne

Re: pixelgetcolor sur une image

#7

Message par littlechiki » mer. 07 août 2019 10:28

Update :
Même en changeant le code pour
#Include <GUIConstantsEx.au3>
$GUI = GUICreate("",1100,1000,350,10)
$image = GUICtrlCreatePic(".\0.gif",500,500,100,100)
$button = GUICtrlCreateButton("Couleur",10,90,70,30)
$hWnd = WinGetHandle("GUI","")
GUISetState(@SW_SHOW)
While 1
        Switch GuiGetMsg()
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $button
                        $pix = PixelGetColor(530,530,$hWnd)
                MsgBox(0,"","Couleur : " & Hex($pix))
        EndSwitch
WEnd
Mon PixelGetColor trouve toujours le pixel de l'écran et non de ma GUI...

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 730
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

Re: pixelgetcolor sur une image  

#8

Message par walkson » mer. 07 août 2019 16:56

Bonjour,
Je vous ai mis des commentaires dans le code
#Include <GUIConstantsEx.au3>

Opt("PixelCoordMode", 0)
;0 = Coordonnées relatives à la fenêtre définie
;1 = (défaut) Coordonnées absolues d'écran
;2 = Coordonnées relatives à la zone client de la fenêtre définie

$GUI = GUICreate("",250,250) ;Retourne le handle de la fenêtre.
$image = GUICtrlCreatePic(".\0.gif",100,100,50,50) ;le pic est de 50x50 donc l'image est redimensionnée à 50x50
$button = GUICtrlCreateButton("Couleur",10,90,70,30)
$hpic = GUICtrlGetHandle($image) ;handle du pic qui sera analysé
GUISetState(@SW_SHOW)
While 1
        Switch GuiGetMsg()
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $button
                                                For $i = 0 To 50
                                                        For $y = 0 To 50
                                                        ConsoleWrite(Hex(PixelGetColor($i,$y,$hpic),6) &" /X "& $i &" /Y "& $y & @CRLF)
                                                        Next
                                                Next

        EndSwitch
WEnd
;à la fin, nous avons:
;FFFFFF /X 49 /Y 49 => blanc
;F0F0F0 /X 49 /Y 50 => gris
;F0F0F0 /X 50 /Y 0
;F0F0F0 /X 50 /Y 1
;comme le fait remarquer Jchd, il faut retirer 1 pixel de la taille totale
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi

littlechiki
Niveau 3
Niveau 3
Messages : 41
Enregistré le : sam. 13 avr. 2019 12:58
Status : Hors ligne

Re: pixelgetcolor sur une image

#9

Message par littlechiki » mer. 07 août 2019 18:23

Oh parfait merci ! Grâce à toutes ces explications, j'ai compris et mon test est concluant !
Un grand merci car sans ces explications, je serai encore en train de pédaler dans la semoule ! :lol:

Répondre