【问题标题】:Getting the color name from the ARGB and/or hexadecimal color palette [duplicate]从 ARGB 和/或十六进制调色板中获取颜色名称 [重复]
【发布时间】: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?你对红色的定义可能和我的很不一样。
  • 这可能会有所帮助.. stackoverflow.com/questions/2109756/…
  • 你可以用 RGB 制作数百万种颜色,计算机不可能知道你对每种颜色的称呼。
  • 这个answer 也可能有帮助。

标签: c# colors implicit-conversion hex


【解决方案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" 不会匹配所有定义。
猜你喜欢
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
  • 1970-01-01
  • 2011-01-29
  • 2012-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多