Winforms colordialog中的专有颜色名称

Winforms colordialog中的专有颜色名称,winforms,naming-conventions,colors,Winforms,Naming Conventions,Colors,每当我运行此命令并打开“颜色”对话框时,有许多颜色没有正确的名称,列表框将显示类似“ffff8000”(橙黄色)的内容。有没有其他方法可以使用正确的名称?有没有合适的颜色名称库可以在代码中引用 colorDialog1.ShowDialog(); cl.Add(colorDialog1.Color.Name); listBox1.Items.AddRange(cl.ToArray()); NET framework定义了KnownColor枚举,您可以使用它将颜色值

每当我运行此命令并打开“颜色”对话框时,有许多颜色没有正确的名称,列表框将显示类似“ffff8000”(橙黄色)的内容。有没有其他方法可以使用正确的名称?有没有合适的颜色名称库可以在代码中引用

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

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);
输出:黄色