如何将Hex转换为RGB?

cho*_*bo2 19 .net c# rgb hex colors

我试图用这个来弄清楚颜色是浅还是暗

评估HEX值是暗还是亮

现在.它需要一个int

 float calcLuminance(int rgb)
 {
      int r = (rgb & 0xff0000) >> 16;
      int g = (rgb & 0xff00) >> 8;
      int b = (rgb & 0xff);

      return (r*0.299f + g*0.587f + b*0.114f) / 256;
 }
Run Code Online (Sandbox Code Playgroud)

我有一个十六进制颜色.

我试着这样做

  var color = System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
  int rgb = color.R + color.G + color.B;
   var a = calcLuminance(rgb);
Run Code Online (Sandbox Code Playgroud)

我得到0.11725我认为它必须在0-256之间或类似的东西.

我究竟做错了什么?我一定要隐蔽Rint?还是我离开了?

Chr*_*aas 21

只需将十六进制字符串转换为整数:

int color = Convert.ToInt32("FFFFFF", 16);
Run Code Online (Sandbox Code Playgroud)


Mil*_*war 10

您可以使用:

public string GenerateRgba(string backgroundColor, decimal backgroundOpacity)
{
 Color color = ColorTranslator.FromHtml(hexBackgroundColor);
 int r = Convert.ToInt16(color.R);
 int g = Convert.ToInt16(color.G);
 int b = Convert.ToInt16(color.B);
 return string.Format("rgba({0}, {1}, {2}, {3});", r, g, b, backgroundOpacity);
}
Run Code Online (Sandbox Code Playgroud)

链接到jeremy clifton的原始帖子在git上

  • 未找到原始帖子链接! (2认同)

Blu*_*eft 9

我试图用这个来弄清楚颜色是浅还是暗

只是用 Color.GetBrightness()


[编辑]

我想确定是否应该在文本中使用白色或黑色.所以≤5我应该使用白色和> .5黑色?

有一个数量 方式来确定在给定的背景下,没有一个是完美的使用什么颜色.

最后一个链接实际上建议仅使用黑/白,但选择0.73而不是0.5的截止点.我认为你应该坚持下去,如果你觉得它不适合你,就改变它.

  • @ chobo2只是`浮动ab = System.Drawing.ColorTranslator.FromHtml("#FFFFFF").GetBrightness();`:) (4认同)