2010-06-01 76 views
1

每当我运行这个,并打开颜色对话框,有许多颜色没有一个正确的名称,列表框将显示像“ffff8000”(橙黄色)。是否有另一种方式推送正确的名字?是否有我可以在代码中引用的适当的颜色名称库?colordialog正确的颜色名称

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

回答

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); 

输出:黄色