如何将颜色名称转换为相应的十六进制表示?

Jac*_*ack 5 .net c# hex winforms

例如:

blue 
Run Code Online (Sandbox Code Playgroud)

转换为:

#0000FF
Run Code Online (Sandbox Code Playgroud)

我把它写成:

Color color = Color.FromName("blue");

但我不知道如何获得十六进制表示.任何解决这个问题的方法都表示赞赏 提前致谢.

Han*_*ood 15

你在那里的一半.使用.ToArgb到它的数字的值,将其转换,然后格式化为十六进制值.

int ColorValue = Color.FromName("blue").ToArgb();
string ColorHex = string.Format("{0:x6}", ColorValue);
Run Code Online (Sandbox Code Playgroud)

  • 领先的`FF`是alpha通道或不透明度.虽然这可能与HTML无关,但在其他情况下它完全合法.您可以使用`ColorValue&0xFFFFFF`删除它. (3认同)
  • 它不是"完美的",因为它产生"#FF0000FF"而不是"#0000FF".此外,局部变量不应以大写字母开头. (2认同)

Jim*_*ter 5

var rgb = color.ToArgb() & 0xFFFFFF; // drop A component
var hexString = String.Format("#{0:X6}", rgb);
Run Code Online (Sandbox Code Playgroud)

要不就

var hexString = String.Format("#{0:X2}{1:X2}{2:X2}", color.R, color.G, color.B);
Run Code Online (Sandbox Code Playgroud)