2010-06-01 81 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); 

輸出:黃色