Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从ARGB和/或十六进制调色板获取颜色名称_C#_Colors_Implicit Conversion_Hex - Fatal编程技术网

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;
}