每当我运行它并打开颜色对话框时,有许多颜色没有正确的名称,列表框将显示类似“ffff8000”(橙黄色)的内容。还有另一种推动正确名称的方法吗?我可以在代码中引用一个合适的颜色名称库吗?
colorDialog1.ShowDialog();
cl.Add(colorDialog1.Color.Name);
listBox1.Items.AddRange(cl.ToArray());
答案 0 :(得分:3)
.NET框架定义了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);
输出:黄色