所用到的
16bit颜色是 2554 形式:
32bit颜色是:
color16 to color32
unsigned long
color16_to_color32(unsigned long c16)
{
unsigned long r, g, b, a;
unsigned long pixval;
if (0xFFFF < c16) {
return c16;
}
a = (((c16 & 0xC000) >> 14) & 0x03) * 0xFF / 0x03; //alpha
r = (((c16 & 0x1E00) >> 9) & 0x0F) * 0xFF / 0x0F;
g = (((c16 & 0x01F0) >> 4) & 0x1F) * 0xFF / 0x1F;
b = (((c16 & 0x000F) ) & 0x0F) * 0xFF / 0x0F;
pixval = (a << 24) | (r << 16) | (g << 8) | b;
return pixval;
}
|
其实,我觉得这个转换关系,是由自己的程序自定义的。
也就是说,只要确定转换关系,那么你的color16的值,就会对应在一个color32bit上。
也就是说,不是所有的软件都会得到同样的color32bit.(个人认为)