Code de couleur d'une PictureBox

VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009 - 22 janv. 2007 à 18:41
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009 - 23 janv. 2007 à 18:27
Bonjour à tous!

J'aimerais savoir si quelqu'un connait la signification du code de couleur que l'on obtient en faisant
Picture1.Point(X, Y)
Par exemple, pour le noir j'obtiens "0", le blanc : "16777215", le rouge : "255"... Pour moi c'est assez obscure! Comment fait-on pour le traduire en code RGB

Merci d'avance!

VBGenesis

9 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
22 janv. 2007 à 18:47
Ton aide en ligne te le dit : c'est une valeur de type long.


Tu as des exemples pour décomposer en RGB


Tu peux; entres autres, regarder dans mes sources comment ke préfère utiliser la fonction TranslateColour de l'Api de Windows.


Fais une petite recherche : pleins d'exemples !!!
0
Utilisateur anonyme
22 janv. 2007 à 18:59
Salut,

Pour comprendre ca, il faut le transposer en hexadécimal.16777215 &HFFFFFF Blanc
255 &H0000FF Rouge65280 &H00FF00 Rouge16711680 &HFF0000 Bleu
Donc, on a les trois composantes Rouge, Vert, Bleu.





__________
Kenji
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 janv. 2007 à 21:19
salut, correction pour Kenji -> 65280 &H00FF00 Vert**

RGB c'est 3 valeurs de 0 à 255

si je fais msgbox rgb(50,60,20), j'ai 1326130 (un vert pas beau ^^)

pour récupérer l'inverse du RGB il faut faire sa propre fonction, genre...

Option Explicit
'
Private Type tRGB
    tRed   As Integer
    tGreen As Integer
    tBlue  As Integer
End Type
'
'
Private Function CouleurlToRGB(ByVal ColRGB As Long) As tRGB
    CouleurlToRGB.tRed = Int(ColRGB And &HFF)
    CouleurlToRGB.tGreen = Int((ColRGB And &H100FF00) / &H100)
    CouleurlToRGB.tBlue = Int((ColRGB And &HFF0000) / &H10000)
End Function
'
'
Private Sub Form_Load()
    Dim r As tRGB
    r = CouleurlToRGB(1326130)
    MsgBox r.tRed & " " & r.tGreen & " " & r.tBlue
    Unload Me
End Sub

<small>Coloration
syntaxique automatique [AFCK] </small>
       
++
PCPT   [AFCK]
<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
23 janv. 2007 à 16:31
Correction pour PCPT :p

R.G.B c'est plutot "As Byte" ! De plus Objet.Point() renvoi un type long donc RGBA exemple :

Private Type RGBA
   R As byte
   G As Byte
   B As Byte
   A As Byte
End Type

Private Type RGBL
   C As Long
End Type

Dim X As RGBL
Dim Y As RGBA

X.C = Picture1.Point(X, Y)
Let Y = X

MsgBox Y.R & " - " & Y.G & " - " & Y.B

etc...

@+

E.B.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 janv. 2007 à 16:41
euh.. ok pour byte mais Y=X ? pas de fonction? il y aura une erreur de type, qu'est-ce qui m'échappe?
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
23 janv. 2007 à 16:54
Euh...
on est bien sous VB, là ?

Voilà ce que dit l'aide en ligne de VB :

Point Method
Returns, as a long integer, the red-green-blue (RGB) color of the specified point on a Form or PictureBox. Doesn't support named arguments.
Syntax



object.Point(x, y)



The Point method syntax has these parts:



Part Description
object Optional. An object expression that evaluates to an object in the Applies To list. If object is omitted, the Form object with the focus is assumed to be object.
x, y Required. Single-precision values indicating the horizontal (x-axis) and vertical (y-axis) coordinates of the point in the ScaleMode property of the Form or PictureBox. Parentheses must enclose the values.
Remarks



If the point referred to by the x and y coordinates is outside object, the Point method returns -1.
0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
23 janv. 2007 à 17:27
Sous VB6 le code que j'ai soumis marche parfaitement. Ne vous inquietez pas :p
Pour VB.net le framework comporte deja suffisament de fonction de conversion pas la peine d'en ajouté comme dans la chicorée :p


A oui mince ça pourrait preter a confusion mais les x et y utilisé dans Picture1.Point(X, Y)
ne sont pas les même que les dim x et dim y (j'aurais du utilisé a et b ! lol)


A autre chose encore il faut lire LSET et pas LET ! bon aller je retape tout ça m'ennerve :p


Private Type RGBA
   R As Byte
   G As Byte
   B As Byte
   A As Byte
End Type


Private Type RGBL
   C As Long
End Type


Private Sub Command1_Click()
    Dim X As RGBL
    Dim Y As RGBA
   
    X.C = Picture1.Point(10, 10) ' ou 20, 20 ou ce que vous voulez
    LSet Y = X
   
    MsgBox Y.R & " - " & Y.G & " - " & Y.B
   
End Sub

E.B.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 janv. 2007 à 17:44
ok, merci des corrections EB

VBGenesis  tu as maintenant le choix ;)
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
VBGenesis Messages postés 292 Date d'inscription samedi 25 février 2006 Statut Membre Dernière intervention 22 février 2009
23 janv. 2007 à 18:27
Bonjour!

Tous d'abord merci pour vos réponses (nombreuses et précises!) :o))

J'ai réussi à me servir de TranslateColor (merci jfmarques) mais je
garde les codes de PCPT et EBArtSoft qui "risquent" de se révéler
utiles. Je suis désolé de ne rien avoir trouvé avant mais avec comme mots-clé "couleur" et "picturebox"... je n'ai pas trouvé grand-chose ;o)
Voilà encore une fois merci à tous!

VBGenesis
0
Rejoignez-nous