从ARGB和/或十六进制调色板中获取颜色名称

时间:2013-12-16 11:41:53

标签: 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 hexadecimal only

例如。红色,青色,蓝色的东西。

1 个答案:

答案 0 :(得分:4)

在.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值,值将是名称。