32位颜色 转换成16位颜色
向别人学习而来:分享。。
1.颜色值有32位存储和16位存储实现呼唤。
2.原理new Color(97,100,255);这个是32位存储 参数依次是 r、g、b。省略了a,alpha通道的值 rgba;
实现:
int32 int32Color(unsigned int r,unsigned int g, unsigned int b)
{
return (((r)&0xff) >>16) | (((g)&0xff)>>8) | ((b)&0xff)>>0));
}
32位转16位:16位存在是rgb 565这样的对应分配比例:都是取的前几位来实现颜色转化
实现如下:
u16 32ConvertTo16(int32 color)
{
u8 r,g,b;
b = (color>>3) & 0x1f; 取32位颜色b的前五位 0x1f 二进制表示如下 00011111
g = (color>>(8+2)) & 0x3f;
r = (color>>(16+3)) & 0x1f;
return ((r<<11) | (g<<5) | (b<<0));//((r<<11) + (g<<5) + (b<<0));
}