Dans mon application, je permets à l'utilisateur de créer une couleur, puis de lui montrer le nom ou la valeur de la couleur plus tard. Si l'utilisateur choisit le rouge (tout rouge, pas rougeâtre), je veux lui montrer "rouge". S'il choisit une couleur étrange, alors la valeur hexadécimale serait très bien. Voici un code d'exemple qui démontre le problème :
static string GetName(int r, int g, int b)
{
Color c = Color.FromArgb(r, g, b); // Notez que spécifier a = 255 ne fait aucune différence
if (c.IsNamedColor)
{
return c.Name;
}
else
{
// retourner la valeur hexadécimale
}
}
Même avec des couleurs très évidentes comme le rouge, IsNamedColor
ne retourne jamais vrai. En regardant les valeurs ARGB de ma couleur et de Color.Red
, je ne vois aucune différence. Cependant, appeler Color.Red.GetHashCode()
renvoie une valeur de hachage différente de Color.FromArgb(255, 0, 0).GetHashCode()
.
Comment puis-je créer une couleur en utilisant des valeurs RGB spécifiées par l'utilisateur et avoir la propriété Name
correctement affichée ?