2

我正在尝试将十六进制值转换为其相应的颜色名称,但 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

4 回答 4

4

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

(color)ColorTranslator.FromHtml(s1);
于 2012-07-31T14:17:42.897 回答
1

您可以改用ColorTranslator.FromHtml方法

于 2012-07-31T14:15:26.663 回答
0

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

要仅打印 RGB 值:

Console.Write(color.Name.Substring(2));
于 2012-07-31T14:17:32.583 回答
0

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

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

于 2015-03-26T13:38:47.510 回答