cho*_*bo2 19 .net c# rgb hex colors
我试图用这个来弄清楚颜色是浅还是暗
现在.它需要一个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之间或类似的东西.
我究竟做错了什么?我一定要隐蔽R到int?还是我离开了?
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)