C# 从ARGB和/或十六进制调色板获取颜色名称
我需要根据颜色的十六进制调色板代码获得相应的颜色名称 我试过:C# 从ARGB和/或十六进制调色板获取颜色名称,c#,colors,implicit-conversion,hex,C#,Colors,Implicit Conversion,Hex,我需要根据颜色的十六进制调色板代码获得相应的颜色名称 我试过: brush = (new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(dialog.Color.A, dialog.Color.R, dialog.Color.G, dialog.Color.B))); TheColor = Convert.ToString(brush); //here i get the hexadeci
brush = (new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(dialog.Color.A, dialog.Color.R, dialog.Color.G, dialog.Color.B)));
TheColor = Convert.ToString(brush); //here i get the hexadecimal only
红色、青色、蓝色之类的东西。在.NET中有“已知颜色”的概念 显然,这无法识别您知道的任何颜色,只能识别.NET framework中预定义的颜色
否则,您必须编写自己的识别器,这应该很容易做到,例如,使用
字典,其中键将是RGB值,值将是名称。如果十六进制值没有任何类型的名称,该怎么办?你如何定义红色?你对红色的定义可能与我的定义大不相同。这可能会有所帮助。。你可以用RGB制作数百万种颜色,计算机无法知道你所称的每种颜色。这也可能会有所帮助。其中一些颜色取决于RGB值的来源。例如,我不认为这与HTML对“Aqua”的定义有关。不要批评什么是有趣的答案,只是指出“.Net颜色”不会匹配所有定义。
public string ColorName(Color toCheck)
{
string result = "";
foreach (KnownColor known in Enum.GetValues(typeof(KnownColor)))
{
Color c = Color.FromKnownColor(kc);
if (toCheck.ToArgb() == known.ToArgb())
{
result = known.Name;
}
}
return result;
}