颜色的表示

  颜色表示

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操作&即可

转载于:https://www.cnblogs.com/zcj0620/archive/2013/05/07/3065632.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值