Couleurs [Résolu]

Signaler
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014
-
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014
-
Est ce que quelqu'un peut m'expliquer comment manipuler les couleurs ?!
J'ai compris qu'il y avait plusieurs façons :
Color.Red, Color.Green ...
des couleurs sous forme d'entier.
des couleur en hashcode
sous 3 composantes.
sous 4 composantes.

j'aimerais convertir une couleur définie comme Color.Red par exemple en sa valeur entière (2chiffres je crois)

PS : si mes questions sont un peu relourdes, expliquer moi comment trouver ces informations ailleur parce que dans le msdn, je trouve pas, et dans les tutos non plus ...

MMN

12 réponses

Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014

Voila, j'ai fait une méthode qui retourne la composante la plus grande.
Ca fait que 3 couleurs mais c'est déja ca.
Si quelqu'un possède une méthode qui converti une couleur (R,G,B) en la couleur excel la plus proche, je suis intéréssé, moi j'ai pas le temps de m'amuser à la faire.

r.Interior.ColorIndex =




this
.getCouleurExcel(System.

Convert
.ToInt32(dr.Cells[j].Style.BackColor.R),System.

Convert
.ToInt32(dr.Cells[j].Style.BackColor.G),System.

Convert
.ToInt32(dr.Cells[j].Style.BackColor.B));








public



int
getCouleurExcel(

int
R,

int
G,

int
B){


if
(R > G && R > B)


return
3;


else



if
(G > B)


return
4;


else



return
5;}

Merci à tous en tous cas

MMN
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Salut,


Comme tu le signales, tu peux définir les couleurs

- comme des entiers (ToArgb)

- avec 3 composantes (rouge, vert, bleu)

- avec 4 composantes (rouge, vert, bleu, alpha)


mais à ma connaissance, pas avec 2 composantes.





            Color c = new Color();

            c = Color.Red;

             // Obtient la valeur Argb d'une couleur.

            MessageBox.Show(c.ToArgb().ToString());

             // Obtient la valeur alpha d'une couleur.

            MessageBox.Show(c.A.ToString());

             // Obtient les 3 valeurs caractéristiques d'une couleur

             // qui sont le rouge, le vert et le bleu.

            MessageBox.Show(c.R.ToString());

            MessageBox.Show(c.G.ToString());

            MessageBox.Show(c.B.ToString());

Manu

--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014

ok mais la valeur entière retournée par ToArgb() est une valeur sur 5 chiffres avec un signe en plus.
Moi je veux pouvoir attribuer une couleur du type color.red à une case excel
range.Interior.ColorIndex

et ce colorindex à l'air de vouloir des valeurs sr 2 chiffres

MMN
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Salut,

Je pense que ta question est en relation avec le probleme que tu as ici
http://www.csharpfr.com/infomsg_COULEUR-DATAGRIDVIEWBOX-VERS-EXCEL_754817.aspx#4

Une couleur, c'est 3 composantes R G B (pour Red Green Blue / Rouge Vert Bleu) + parfois une 4eme composante, la couche Alpha, qui en fait défini la transparence a appliquer.
Ces 4 valeurs sont comprises entre 0 et 255 (un octet).

Donc en effet, via la structure Color, tu peux recupere les Propriétés Color.R, Color.G et Color.B, ... ou sous forme d'entier avec la méthode ToArgb()

Dans ton cas, par contre, il faut se renseigner, pour voir ce que Range.Interior.Color prend comme valeur. (si ca se trouve, ce n'est pas cette propriété la qu'il faut utiliser).

Mx
MVP C# 
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Bon bah j'ai été eu par le refresh ^^

Mx
MVP C# 
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014

la valeur que prend un range.interior.colorindex, c'est justement ce que j'arrive pas à trouver.

MMN
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Essaie ca pour voir :

range.Interior.ColorIndex=5;

exemples ici:
http://www.microsoft.com/france/msdn/office/articles/20030707-calendrier-perso.mspx

Dis moi si ca fonctionne
Mx
MVP C# 
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Hé bein voila :)

Mx
MVP C# 
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014

ca ca fonctionne.
Mais cette valeur n'est pas l'entier retourné par getHashCode()

MMN
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
49
Non.
Excel a son propre index de couleurs.
Donc pour faire ce que tu souhaites faire, il va falloit te creer une petite méthode qui compare la couleur de la cell de ton datagridview, et qui retourne la couleur qui ressemble le plus dans excel.

Mx
MVP C# 
Messages postés
223
Date d'inscription
mercredi 31 mai 2006
Statut
Membre
Dernière intervention
5 mai 2014

ouais mais des couleurs excel yen a une 50aine alors que des couleurs de case de datagrid yen a des milliers ...

MMN