我正在尝试将十六进制值转换为其对应的颜色名称,但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”莫名其妙地发生在每种颜色上,但是黑色和白色。有谁知道为什么会这样?
答案 0 :(得分:4)
我们在其中一个项目中有类似的功能,您可以使用以下
(color)ColorTranslator.FromHtml(s1);
答案 1 :(得分:1)
答案 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)