ColorConverter ConvertFromString返回错误的名称

时间:2012-07-31 14:10:47

标签: c# asp.net-mvc-3

我正在尝试将十六进制值转换为其对应的颜色名称,但ColorConverter的ConvertFromString方法正在插入额外的字符:

string s1 = "#000000";
string s2 = "#ccff33";
string s3 = "#990000";
Color color;
ColorConverter converter = new ColorConverter();

color = (Color)converter.ConvertFromString(s1);
Console.Write(color.Name); // Outputs "Black"

color = (Color)converter.ConvertFromString(s2);
Console.Write(color.Name); // Outputs "ffccff33";

color = (Color)converter.ConvertFromString(s3);
Console.Write(color.Name); // Outputs "ff990000";

额外的“ff”莫名其妙地发生在每种颜色上,但是黑色和白色。有谁知道为什么会这样?

4 个答案:

答案 0 :(得分:4)

我们在其中一个项目中有类似的功能,您可以使用以下

(color)ColorTranslator.FromHtml(s1);

答案 1 :(得分:1)

您可以使用ColorTranslator.FromHtml Method代替

答案 2 :(得分:0)

那是因为System.Drawing.Color以ARGB格式存储颜色,即Alpha + RGB。

仅打印RGB值:

Console.Write(color.Name.Substring(2));

答案 3 :(得分:0)

额外的“ff”表示颜色的不透明度,在这种情况下是100%(如davenewza所说)。

Hexa中的颜色在Alpha或不透明度的开头有2个可选字符,红色有2个字符,绿色有2个字符,蓝色有2个字符(#FF CC FF 33)