0

我有这个<input type="color" id="favcolor">。现在我想存储颜色的名称。我的意思是:红色,蓝色,黑色等。

我从中得到的值textbox是:#ffffff(favcolor.text.tostring();。与选择的颜色相关)。我怎样才能得到颜色的名字?

我想存储:红色,蓝色,黑色,白色..就这样!没有html代码,没有rgb颜色!我想使用颜色的名称:C#

顺便说一句,我已经尝试过:

颜色 mycolor = Color.FromName("red"); 那么你得到的是.. #FF0000 我想要相反

4

3 回答 3

0

考虑一下:颜色。来自名字

编辑:

System.Array colorsArray = Enum.GetValues(typeof(KnownColor));
KnownColor[] allColors = new KnownColor[colorsArray.Length];
Array.Copy(colorsArray, allColors, colorsArray.Length);
var colorValueToColorMap = allColors.ToDictionary(x => Color.FromName(x.ToString()).ToString().ToLower(), Color.FromName(x.ToString()));

var colorValue = "#FF0000";
var argbColorValue = "#" + "FF" +  colorValue.Substring(1);
var color = colorValueToColorMap[argbColorValue.ToLower()];
于 2013-11-12T04:12:01.780 回答
0

您需要遍历已知颜色,将它们转换为十六进制代码并比较匹配。

var colorInfo= Enum.GetValues(typeof(KnownColor))
                .Cast<KnownColor>()
                .Select(x => new { Name = x.ToString(), Color = FromKnownColor(x) })
                .FirstOrDefault(x => x.Color.ToArgb() == submittedColorArgbCode);

           return (colorInfo != null) ? colorInfo.Name:"Unknown";
于 2013-11-12T05:49:22.237 回答
0

您可以使用以下代码,请注意,仅对于已知颜色,您将获得预期的颜色名称(红色、水色、绿色)。

Color color = System.Drawing.ColorTranslator.FromHtml("#FF98FB98");
string colorName = color.Name;

输出

FF32CD32 => 青柠

FF00FFFF => 水色

于 2013-11-12T04:26:28.607 回答