Convertir un code hexadecimal en couleur

Messages postés
9
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
26 octobre 2004
- - Dernière réponse : Arthenius
Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
- 15 oct. 2004 à 12:16
Bonjour,
J'aimerais savoir comment convertir un code hexadecimale du genre #CC99FF en nom de couleur genre rouge!
Merci de votre aide!
Afficher la suite 

14 réponses

Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
2
0
Merci
Est ce que tu veux un nom de couleur ou la couleur
si c la couluer pour l'affecter à un controle
essaie de convertir ton hexa en entier et apres utilise Color.FromArgb(int)

il existe aussi ColorConverter, mais je ne l'utilise pas, donc je ne peux pas t'en dire plus
Commenter la réponse de taoetc
Messages postés
9
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
26 octobre 2004
0
Merci
J'aimerais avoir en sortie le nom de la couleur... je vais essayer! à toute
Commenter la réponse de cs_rappeur
Messages postés
9
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
26 octobre 2004
0
Merci
voilà ma fonction mais ca ne fonctionne pas très bien...

//fonction convert
private string ConvertColor(string ColorHexa)
{
int color = citiConvert.ToInt(ColorHexa);Color colorC new Color(); colorC Color.FromArgb(color);
string colorName = color.ToString(); return colorName ;
}

//appel de la fonction
string color = ConvertColor("#CCFF33");

Peux-tu m'aider???
Commenter la réponse de cs_rappeur
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
2
0
Merci
déjà citiConvert, moi j'ai pas ca, donc je peux pas testé

autrement, dans tous les cas,
ca ne va jamais te donner le nom de la couleur

Moi, je ne connais pas d'autres moyen de transformer un entier en couleur

La classe color a bien apres une méthode ToName, mais ca ne marche pas si tu rentre la couleur avec argb.

Moi comme ca de prime abord, il faudrait parcourir tous les types et comparer leurs valeurs a avec ta valeur recupérer la plus proche , et comme ca tu auras un nom qui s'aproche de ta valeur

Par contre pour ton hexadécimal, je me demande si il ne faut pas que tu la manipules parce qu'il me semble que l'hexa est constitué comme suit
#RRVVBB les RR sont la valeurs rouge, les VV sont la valeur verte, et bb la valeur bleu

Il faudrait des lors que tu parcoures tous les types de couleurs prédéfinies trois fois une fois pour rouge, une fois pour vert une fois pour bleu, tu rempli un tableu, avec une ligne par tpye de couleur et la valeur différentiel avec les valeurs que tu as

La couleur prédéfnie qui correspond à ton code serait la couleur qui a comme valeur 0 dans ton tableau

Après, je te dis peut etre des conneries et c peut etre suprer compliqué par rapport à une fonction qui existe mais que je ne connais pas

je n'ai pas letemps de faire des tests ni de trop chercher, donc je te laisse avec ces idées

bon courage
Commenter la réponse de taoetc
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
0
Merci
Color color = ColorTranslator.FromHtml(ColorHexa);


pour ce qui est du nom je ne vois pas non plus d'autre solution que la comparaison avec les couleurs définies en static dans la structure Color

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
Messages postés
9
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
26 octobre 2004
0
Merci
Yeah merci à vous!
Surtout à toi le coq parce que la variante à taoetc est un peu compliqué pour moi...
mais maintenant que j'ai la couleur en RGB puis-je avoir le nom exact de la couleur?
Commenter la réponse de cs_rappeur
Messages postés
9
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
26 octobre 2004
0
Merci
Parce que en fait mon but est de transformer la valeur hexadécimale en nom de couleur déjà définie...!
Commenter la réponse de cs_rappeur
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
0
Merci
en fait pour l'exemple que tu as donné apparemment il n'existe pas de couleur predefinie
sinon le code de comparaison :

//fonction convert
private string ConvertColor(string ColorHexa)
{
Color color = ColorTranslator.FromHtml(ColorHexa);
string colorName = "";
PropertyInfo[] pinfos = typeof(Color).GetProperties(BindingFlags.Public | BindingFlags.Static );

foreach ( PropertyInfo pinfo in pinfos )
{
Color namedColor = (Color)pinfo.GetValue(null, null);
if (  namedColor.ToArgb() == color.ToArgb() )
{
colorName = namedColor.Name;
break;
}
}

return colorName;
}


Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
2
0
Merci
il est fort le coq, il est vraiment fort

Je t'aurais fait une petite usine à gaz moi ( sauf que moi j'aurais trouvé la couleur prédéfinie qui s'approche le plus de la couleur passée , na)

[:-D]
Commenter la réponse de taoetc
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
75
0
Merci
ben donne quand même le code ça peut etre utile je pense :)
mieux vaut trop d'exemples que pas assez ;)

Cocoricoooooooo !!!!
coq
MVP Visual C#
Commenter la réponse de cs_coq
Messages postés
346
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
3 septembre 2007
2
0
Merci
fiou faut que j'écrive le code , je donne le principe dac

créé un liste d'objet à deux valeurs:
premier : le nom de la couleur
deuxieme : un entier représentant un ecart

apres on récupére la valeur de l'hexadécimal comme tu as fait et chaque valeur rouge , vert , bleu

Color MaCouleur = ColorTranslator.FromHtml(ColorHexa);
int rouge = MaCouleur.R;
int vert = MaCouleur.G;
int bleu = MaCouleur.B;


pour chaque couleur prédéfinie

je rentre dans ma liste ,
le nom de la couleur et les ecarts entre chaque type de couleur

une fois que c fait, je parcours ma liste en recherchant l'écart le plus petit et j'ai le nom de la couleur la plus proche

voila, la conception est faite, à vous de coder si vous voulez
Commenter la réponse de taoetc
Messages postés
9
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
26 octobre 2004
0
Merci
j'ai essayé ta fonction mais elle me retourne rien!
mon appel est : string ColorHexa ="#CCFF33";
peux-tu m'expliquer pourquoi? merci
Commenter la réponse de cs_rappeur
Messages postés
9
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
26 octobre 2004
0
Merci
si c'est possible d'avoir le nom de la couleur la plus proche ça irait bien...
Commenter la réponse de cs_rappeur
Messages postés
1183
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
12
0
Merci
et le sourire de la cremiere ;o)))

a mon avis tu va avoir du mal a sortir le nom approchant de ta couleur...

soit tu bride les couleurs dispo à celle contenu dans la structure color
soit tu fais une usine pour trouver la couleur approchant...
mais alors la...

good luck...

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Commenter la réponse de Arthenius