一.ColorMatrix
Android中的色彩矩阵
色彩矩阵对于色彩的存储,Bitmap类使用一个32位的数值来保存。红、绿、蓝及透明度各占8位,每一个色彩分量的取值范围是0-255。透明度为0表示完全透明,为255时,色彩完全可见。
使用方法:paint的函数
ColorMatrix函数
setSaturation——设置饱和度
setScale——色彩缩放
setRotate——色彩旋转
应用:相机软件中会有各种滤镜效果,这些滤镜效果大部分就是通过更改ColorMatrics矩阵来完成的
二.setColorFilter
也是用来处理图片的效果的
PorterDuffColorFilter
这个叫PorterDuff颜色滤镜,也叫图形混合滤镜;其名称是Tomas Proter和Tom Duff两个人名的缩写,他们提出的图形混合的概念极大地推动了图形图像学的发展。
这个颜色滤镜的声明如下:
public PorterDuffColorFilter(int srcColor, PorterDuff.Mode mode)
———————
setXfermode
这个函数是图像混合里最难的一个了,它的功能也是相当强大的,这个模式叫做图形混合模式。
与setColorFilter一样,派生自Xfermode的有三个类:
禁用硬件加速:
使用离屏绘制
选区
这一点与Photoshop是类似的,就是以白色为目标色,容差为100找到对应的选区;
容差是以颜色差异为基础的,任何两个颜色之间的颜色差异是从0-255的范围内的。具体两个颜色之间的差异的的数值为多少是需要靠公式来计算的:《维基百科:颜色差异》
而容差的概念就是指与目标色所能容忍的最大颜色差异,所以容差越大,所覆盖的颜色区域就越大;所以当容差为0时,就表示只选择与目标色一模一样的颜色区域;当容差为100时,就表示与目标色值的颜色差异在100范围内的都是可以的;而由于最大的颜色差异是255,所以当我们的容差是255时,所有的颜色都将被选中;
我们使用Photoshop来演示下:
在Photoshop中,有个魔棒工具,它有一个容差的参数,默认是0;指的是只与目标色一致的颜色。我们分别看下当容差为100和容差为255的区域选择范围:
———————
在上面的公式中涉及到一个概念,目标图DST,源图SRC。那什么是源图,什么是目标图呢p>
我们讲过PorterDuff.Mode表示混合模式,枚举值有18个,表示各种图形混合模式,有:
18中模式
Mode.CLEAR
Mode.SRC
Mode.DST
Mode.SRC_OVER
Mode.DST_OVER
Mode.SRC_IN
Mode.DST_IN
Mode.SRC_OUT
Mode.DST_OUT
Mode.SRC_ATOP
Mode.DST_ATOP
Mode.XOR
Mode.DARKEN
Mode.LIGHTEN
Mode.MULTIPLY
Mode.SCREEN
Mode.OVERLAY
Mode.ADD
Mode.SRC_IN
SRC_IN模式是在相交时利用目标图像的透明度来改变源图像的透明度和饱和度
示例1:图形圆角用的就是Mode.SRC_IN模式
示例2:图片倒影
Mode.SRC_OUT
橡皮擦效果
使用:setXfermode,PorterDuffXfermode,18种模式
这节我们将学到如下内容:
- 传统地给按钮添加阴影的方法
- 如何给已有控件添加阴影
- 如何给图片添加阴影
- 2种方式的比较,优缺点
一、layerlist给按钮添加阴影效果、
二、Paint.setShadowLayer实现阴影效果
案例:
1.录音悬浮窗的阴影效果
2.换机精灵的光影效果
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!