从 ARGB 和/或十六进制调色板中获取颜色名称 [重复]
Posted
技术标签:
【中文标题】从 ARGB 和/或十六进制调色板中获取颜色名称 [重复]【英文标题】:Getting the color name from the ARGB and/or hexadecimal color palette [duplicate] 【发布时间】:2014-01-03 19:03:05 【问题描述】:我需要根据颜色的十六进制调色码获取对应的颜色名称。
我试过了:
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
例如。红色,青色,蓝色之类的东西。
【问题讨论】:
如果该十六进制值没有任何名称怎么办?你如何定义RED?你对红色的定义可能和我的很不一样。 这可能会有所帮助.. ***.com/questions/2109756/… 你可以用 RGB 制作数百万种颜色,计算机不可能知道你对每种颜色的称呼。 这个answer 也可能有帮助。 【参考方案1】:在 .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;
显然,这无法识别您知道的任何颜色,只能识别那些在 .NET 框架中预定义的颜色。
否则您将不得不编写自己的识别器,这应该很容易做到,例如使用 Dictionary<string, string>
,其中键是 RGB 值,值是名称。
【讨论】:
其中一些将取决于 RGB 值的来源。例如,我认为这些不会与 "Aqua" 的 html 定义相关联。不批评什么是有趣的答案,只是指出 ".Net colours" 不会匹配所有定义。以上是关于从 ARGB 和/或十六进制调色板中获取颜色名称 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
先进的应用开发touchgfx 之 《Using the L8 Image Format》