В моем приложении я разрешаю пользователю создать цвет, а затем покажу ему имя или значение цвета. Если пользователь выбирает красный (полностью красный, а не красный), я хочу показать ему «красный». Если он выберет какой-то странный цвет, тогда значение шестнадцатеричного кода будет просто нормальным. Вот пример кода, который демонстрирует проблему:
static string GetName(int r, int g, int b)
{
Color c = Color.FromArgb(r, g, b); // Note that specifying a = 255 doesn't make a difference
if (c.IsNamedColor)
{
return c.Name;
}
else
{
// return hex value
}
}
Даже с очень очевидными цветами, такими как красный IsNamedColor
никогда не возвращает истину. Глядя на значения ARGB для моего цвета и Color.Red
, я не вижу разницы. Однако вызов Color.Red.GetHashCode()
возвращает хэш-код, отличный от Color.FromArgb(255, 0, 0).GetHashCode()
.
Как я могу создать цвет, используя заданные пользователем значения RGB, и свойство Name
должно быть правильным?