Color颜色转换

颜色:

一种颜色是由红、绿、蓝三种颜色合成出来的,所以参数color只能取8位的0xAARRGGBB样式颜色值

其中:

A代表透明度:

取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,透明度越高,图像也就越透明。当取0时,图像完全不可见

R代表红色值:

取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,红色越少,当取0时,表示红色完全不可见,当取255时,红色完全显示

G代表绿色值:

取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,绿色越少,当取0时,表示绿色完全不可见,当取255时,绿色完全显示

B代表蓝色值:

取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,蓝色越少,当取0时,表示蓝色完全不可见,当取255时,蓝色完全显示

举例:

比如0xFFFF0000就表示大红色,因为透明度是255,表示完全不透明,红色取全量值255,其他色值全取0,表示颜色中只有红色;比如0xFF0F0000就会显示弱红色,当表示黄色时,由于黄色是由红色和绿色合成的,所以0xFFFFFF00就表示纯黄色,如果我们需要让黄色带有一部分透明度,比如0xABFFFF00,当透明度值减少到0时,任何颜色都是不可见的,就是图像变成了全透明,比如0x00FFFFFF虽然有颜色值,但由于透明度是0,所以整个颜色是不可见的;

常量颜色:

可以通过Color.XXX来直接使用这些颜色,比如红色,在代码中可以直接使用Color.RED

颜色合成:

Color.argb(int alpha,int red,int green,int blue)   

Color.rgb(int red,int green,int blue)

有时候会看到直接利用(alpha<<24)|(red<<16)|(green<<8)|blue

来合成对应颜色值的过程,其实跟利用Color.argb()函数来合成的结果是一样的,因为Color.argb()函数实现原理:

public static int argb(int alpha,int red,int green,int blue){

return (alpha<<24)|(red<<16)|(green<<8)|blue;

}

<<是左位移符号,|是二进制运算符,将各个二进制合并之后的结果就是分别对应A、R、G、B、分量

提取颜色分量:

我们不仅能通过Color类来合并颜色分量,而且能从一个颜色中提取出指定的颜色分量

函数:

Color.alpha(int color)            //提取透明度

Color.red(int color)                //提取红色分量

Color.green(int color)            //提取绿色分量

Color.blue(int color)            //提取蓝色分量

示例:

int green=Color.green(0xFF000F00);     //得到的结果就是0x0F

 

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值