您的位置:首页 > 其它

32位颜色 转换成16位颜色

2014-03-03 22:27 232 查看
向别人学习而来:分享。。

1.颜色值有32位存储和16位存储实现呼唤。

2.原理new Color(97,100,255);这个是32位存储 参数依次是 r、g、b。省略了a,alpha通道的值 argb;

实现:

int32 int32Color(unsigned int r,unsigned int g, unsigned int b)

{

  return ((r>>16) | (g>>8) | (b>>0));

}

32位转16位:16位存在是rgb 565这样的对应分配比例:都是取的前几位来实现颜色转化

实现如下:

u16 32ConvertTo16(int32 color)

{

  u8 r,g,b;

  b = (color>>3) & 0x1f; 取32位颜色b的前五位 0x1f 二进制表示如下 011111

  g = (color>>2) & 0x3f;

  r = (color>>3) & 0x1f;

  return ((r<<11) | (g<<5) | (b<<0));//((r<<11) + (g<<5) + (b<<0));

    

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