Changer la propriété BackColor d'un controle avec une couleur perso

cs_Makia Messages postés 26 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 10 août 2010 - 17 oct. 2008 à 19:27
xmox667 Messages postés 357 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 26 décembre 2011 - 20 oct. 2008 à 13:17
Bonjour à tous et voici mon souci ^^
J'ai une application qui récupère en permanence la couleur que pointe la souris ( il en ressort un objet de type Color) , je souhaiterais afficher la couleur pointée dans un petit cadre.
J'ai voulu changer la couleur de la propriété BackColor d'une PictureBox avec ma couleur perso pour y visualiser la couleur pointée.

MaPictureBox.BackColor = CouleurPerso ;

Mais cela ne fonctionne pas.
Pouvez vous m'aider svp.

Merci.

7 réponses

xmox667 Messages postés 357 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 26 décembre 2011 4
19 oct. 2008 à 08:08
Salut,
Si ta PictureBox ne contient pas d'image et que CouleurPerso n'est pas transparent ça devrait marcher.
A+
0
xmox667 Messages postés 357 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 26 décembre 2011 4
19 oct. 2008 à 08:12
Salut,
Vérifie aussi que ton application qui te renvoie la couleur pointé par la souris te renvoie bien une couleur valide.
A+
0
cs_Makia Messages postés 26 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 10 août 2010
19 oct. 2008 à 12:01
Qu'est ce que tu appel  une couleur valide ?
J'ai fait un petit test avec  le BackColor d'un label , et ça donne ça :

Sélection du rouge :

Sélection du jaune :

n du vert :

Comme tu peux le constater les couleurs ne sont pas les bonnes sauf le vert ....
Je ne comprend pas , le backColor fonctionne avec le label et non avec la picturebox.

Si quelqu'un a une idée .
Merci
0
cs_Makia Messages postés 26 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 10 août 2010
19 oct. 2008 à 12:04
La sélection jaune donne cette couleur ||||||||||||||
0

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

Posez votre question
cs_Makia Messages postés 26 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 10 août 2010
19 oct. 2008 à 12:13
Pour récupérer la couleur j'utilise se code :

        [DllImport("gdi32.dll")]
        static extern uint GetPixel(IntPtr hdc, int nXPos, int nYPos);

        [DllImport("user32.dll")]
        static extern IntPtr GetDC(IntPtr hwnd);

        [DllImport("user32.dll")]
        static extern Int32 ReleaseDC(IntPtr hwnd, IntPtr hdc);

    IntPtr hdc = GetDC(IntPtr.Zero);

    uint pixel = GetPixel(hdc, Cursor.Position.X, Cursor.Position.Y);

    ReleaseDC(IntPtr.Zero,hdc);

    Color color = Color.FromArgb((int)pixel);
0
cs_Makia Messages postés 26 Date d'inscription mercredi 23 juillet 2003 Statut Membre Dernière intervention 10 août 2010
20 oct. 2008 à 08:25
Finalement j'ai trouvé mon erreur , il faut faire une opération sur la couleur

 color = Color.FromArgb((int)(pixel & 0x000000FF),

                    (int)(pixel & 0x0000FF00) >> 8,

                    (int)(pixel & 0x00FF0000) >> 16);

En faisant ainsi ça me me résous le problème du changement de couleur ainsi que le souci avec le BackColor de ma PictureBox qui ne voulait pas s'afficher .

Bien que mon problème soit réglé , je souhaiterais savoir pourquoi il faut faire cette  opération sur la couleur.
Si quelqu'un  le sais , ça serais sympa de  prendre un peux de temps pour m'expliquer .

Merci  .
0
xmox667 Messages postés 357 Date d'inscription jeudi 8 juin 2006 Statut Membre Dernière intervention 26 décembre 2011 4
20 oct. 2008 à 13:17
Salut,
Tu décompose la couleur :
pixel & 0x000000FF : récupère le rouge
pixel & 0x0000FF00 >> 8 : récupère le vert
pixel & 0x00FF0000 >> 16 : récupère le bleu

Comme la valeur d'une primaire couleur est comprise entre 0 - 255
Pour le vert tu décales d'un octet
Pour le bleu tu décales de 2 octets
Sinon tu aurais des valeurs > 255

Une question : Est tu as essayer ceci
color = Color.FromArgb((int) pixel)

A+
0
Rejoignez-nous