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,
' 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
' 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
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)
' 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
' 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,
' 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
' 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,