【发布时间】:2011-08-09 19:17:06
【问题描述】:
我试图用它来判断颜色是浅色还是深色
Evaluate whether a HEX value is dark or light
现在。它接受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;
}
我有一个十六进制颜色。
我试过这样做
var color = System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
int rgb = color.R + color.G + color.B;
var a = calcLuminance(rgb);
我得到了 0.11725,我认为它必须在 0-256 或类似的范围内。
我做错了什么?我必须将R 转换为int 吗?还是我就差这么远了?
【问题讨论】: