您的位置:首页 > 其它

高效的RGB类型到整型的转换

2009-07-08 23:07 190 查看
一般我们在做RGB与Int的转换时可能喜欢这样做(不用系统函数):

int rgb = 202 + 69 * 256 + 137 * 256 * 256;

int b = rgb / (256 * 256);

int g = (rgb - b * 256 * 256) / 256;

int r = (rgb - b * 256 * 256 - g * 256);

这样做的原因很简单:人脑容易理解,但是计算机可就惨了,因为它不好理解(=_=!),它平白无故的做了N倍的活。下面的做法才是计算机喜欢的(我以前学的移位运算,总是没用武之地,这回终于用上了,哈哈):

uint ParseRGB(Color color)

{

return (uint)(((uint)color.B << 16) | (ushort)(((ushort)color.G << 8 ) | color.R));

}

Color RGB(int color)

{

int r = 0xFF & color;

int g = 0xFF00 & color;

g >>= 8;

int b = 0xFF0000 & color;

b >>= 16;

return Color.FromArgb(r, g, b);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: