今天由于程序需要,需要将真彩色转换成增强色进行颜色匹配,上网搜了一下没搜到相应函数,于是研究了一下RGB16位的增强色,写了这个函数:
public static int RGB16(int argb)
{
uint t = (uint)argb;//转uint便于移位
//argb共32位,AARRGGBB,RGB24只有后24位
//int r = t << 8 >> 24; //000000RR
//int g = t << 16 >> 24;//000000GG
//int b = t << 24 >> 24; //000000BB
//return (r >> 3 << 3 << 16) + (g >> 2 << 2 << 8) + (b >> 3 << 3); //分别移除RGB的后3、2、3位,使成为5、6、5位的16位色
//return (r >> 3 << 19) | (g >> 2 << 10) | (b >> 3 << 3);
return (int)((t << 8 >> 27 << 19) | (t << 16 >> 26 << 10) | (t << 24 >> 27 << 3)); //最终高效算法
}