颜色表示
ARGB(一种色彩模式,也就是RGB色彩模式附加上Alpha(透明度)通道,常见于32位位图的存储结构)A 是alpha值,称为颜色强度,范围为0-255的十进制数的16进制数表示,0xFF表示全强度(255),00指通道中无颜色即0,ARGB定义了四个颜色通道,0xFFFFFFFF代表各个通道都是全强度,为白色,0xFF000000代表黑色,在红、绿、蓝三种颜色均没有颜色,请注意, Alpha 通道 (第一对) 仍然为全强度 (FF)。Alpha 通道中的全强度意味着没有 alpha (FF), 无强度 (00) 意味着全 alpha。因此, 透明像素颜色值为 0x00FFFFFF。
对于一个8位的R、G、B、A值可以通过移位运算得到相应的32位的ARGB值。例如:8位的R、G、B、A值分别red=255(FF16进制)、green=85(55 16进制)、blue=43(F3)、alpha=255(FF),那么32位的ARGB颜色值0xFFFF55F3可以通过如下方式取得:
color32=alpha<<24|red<<16|green<<8|blue;
alpha值为0xFF,二进制为11111111,将它左移24位,结果为11111111000000000000000000000000
红色范围的值为0xFF, 二进制为11111111,将它向左移动16位,结果: 111111110000000000000000;
绿色范围的值为0x55,二进制为01010101,将它向左移动8位,结果: 000000000101010100000000;
蓝色范围的值为0xF3,二进制为11110011,不需要移动.
11110011 将这三组数用或运算运行后,得到11111111111111110101010111110011,转换为16进制等于0xFFFF55F3.可以写成:
当有了32位的ARGB值时,可以通过右移位运算得到相应的0-255之间的A、R、G、B值。
alpha : 右移24位,结果 : 00000000000000000000000011111111,即0xFF(255);
red : 右移16位,结果 : 00000000000000001111111111111111;这时得出了red的值,但alpha值还在一边,使用&操作符(两个都是1则为1,其中一个为0则为0)
将其与0xFF进行运算 : 111111111111111 & 0000000011111111,因为alpha位的数字都与0相比较,所以都为0,所以结果为 0000000011111111;
green: 右移8位,然后与0xFF执行&操作即可.
blue 不需要移位,直接与0xFF操作&即可