OVH Cloud OVH Cloud

Determination couleur d'un pixel

1 réponse
Avatar
Marc VANSTEELANT
Bonjour,

Je pose ma question à tout hasard car je pense fort que ce n'est pas
possible, mais bon... Est-il possible en VBA de determiner la couleur d'un
pixel sur affiché dans un objet, une image ou UserForm ? En VB,VC,VFP oui
mais en VBA ???...
Voilà, c'etait la question tordue du jour, mais si ça existe ça
m'arrangerais franchement ! Merci d'avance,

Marc

1 réponse

Avatar
Phil99999
Bonjour, en réalité, c'est tout à fait possible !!!

Exemple à adapter selon tes besoins :

UserForm ->

Private Sub Picture1_Click()
Dim pixel As Couleur, CursPos As PointAPI

' Récupère la position de la souris
GetCursorPos CursPos

' Récupère la couleur du pixel pointé par la souris
pixel = CouleurPixel(CursPos.X, CursPos.Y)

' Affiche la couleur dans la PictureBox
Picture1.BackColor = RGB(pixel.red, pixel.green, pixel.blue)

' Affiche les coordonnées et la couleur
Label1.Caption = "X:" & CursPos.X & " Y:" & CursPos.Y & "
R:" & pixel.red & " V:" & pixel.green & " B:" & pixel.blue

End Sub


Et dans un module :

Option Explicit

' Retourne l'identifiant du contexte graphique d'une fenêtre
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

' Retourne la couleur d'un pixel à l'écran
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As
Long, ByVal Y As Long) As Long

' Retourne la position actuelle de la souris
Public Declare Function GetCursorPos Lib "user32" (lpPoint As PointAPI) As
Long

' les coordonnées d'un point
Public Type PointAPI
X As Long
Y As Long
End Type

' les composantes d'une couleur
Public Type Couleur
red As Integer
green As Integer
blue As Integer
End Type

' Retourne la couleur du pixel de coordonnées (X,Y)
Public Function CouleurPixel(ByVal X As Long, ByVal Y As Long) As Couleur
Dim test As PointAPI
Dim pixel As Couleur, RGBPx As Long

' Pixel (X,Y) de l'écran (hwnd = 0)
RGBPx = GetPixel(GetDC(0&), X, Y)

' Décompose la couleur (chaque octet représente une composante de la
couleur)
pixel.red = &HFF& And RGBPx
pixel.green = (&HFF00& And RGBPx) 256
pixel.blue = (&HFF0000 And RGBPx) 65536

' Retourne le résultat
CouleurPixel = pixel

End Function

Voila ta réponse,
Phil



Bonjour,

Je pose ma question à tout hasard car je pense fort que ce n'est pas
possible, mais bon... Est-il possible en VBA de determiner la couleur d'un
pixel sur affiché dans un objet, une image ou UserForm ? En VB,VC,VFP oui
mais en VBA ???...
Voilà, c'etait la question tordue du jour, mais si ça existe ça
m'arrangerais franchement ! Merci d'avance,

Marc