从 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》

c#中获取颜色的argb值

ARGB Hex颜色在css html中不起作用

仅使用调色板获取和设置 QFrame 或 QGroupBox 的背景颜色

用Winform怎样写调色板的代码

透明 ARGB 十六进制值