Правильные названия цветов от colordialog - PullRequest
1 голос
/ 01 июня 2010

Всякий раз, когда я запускаю это и открываю диалоговое окно цветов, есть много цветов, которые не имеют правильного имени, в списке будет отображаться что-то вроде «ffff8000» (оранжевый-желтый). Есть ли другой способ нажать правильное имя? Существует ли надлежащая библиотека имен цветов, на которую я могу ссылаться в коде?

   colorDialog1.ShowDialog();
    cl.Add(colorDialog1.Color.Name);   
    listBox1.Items.AddRange(cl.ToArray());

1 Ответ

3 голосов
/ 02 июня 2010

.NET Framework определяет перечисление KnownColor, вы можете использовать его для преобразования значения цвета в имя. Это не будет полным решением, у него нет «оранжево-желтого». Но многие из распространенных цветов присутствуют. Например:

    public static Color LookupKnownColor(uint c) {
        int crgb = (int)(c & 0xffffff);
        foreach (KnownColor kc in Enum.GetValues(typeof(KnownColor))) {
            Color map = Color.FromKnownColor(kc);
            if (!map.IsSystemColor) {
                if ((map.ToArgb() & 0xffffff) == crgb)
                    return map;
            }
        }
        return Color.FromArgb(unchecked((int)(c | 0xff000000)));
    }

Использование:

 Color c = LookupKnownColor(0xffffff00);
 Console.WriteLine(c.Name);

Выход: желтый

...