一、Paint简单的理解是画笔,油漆。而 Paint 接口定义如何为 Graphics2D 操作生成颜色模式。将实现 Paint 接口的类添加到 Graphics2D 上下文中,以便定义 draw 和 fill 方法所使用的颜色模式。
Pain类的常用属性设置方法如下:
setAntiAlias(); //设置画笔的抗锯齿效果
setColor(); //设置画笔的颜色
setARGB(); //设置画笔的A、R、G、B值
setAlpha(); //设置画笔的Alpha值,取值0~255
setTextSize(); //设置字体的尺寸
setStyle(); //设置画笔的风格(空心或实心)
setStrokeWidth(); //设置空心边框的宽度
setDither:设定图像是否使用抖动处理,会使绘制出来的图片 颜色更加平滑,饱满,图像更加清晰。
setFakeBoldText:设置为粗体文本。
setFilterBitmap:对位图进行滤波处理。//参考滤波算法
setHinting:API LEVEL 14:设置暗模式,HINTING_OFF, HINTING_ON
setLetterSpacing:API LEVEL 21:设置文本间距,默认为0,负 数为收紧文本。
setLinearText:设置线性文本
getColor(); //获取画笔的颜色
二、ColorMatrix(颜色矩阵) setColorMatrix
ColorMatrix 有三个子类
1、ColorMatrixColorFilter
对图像进行颜色方面的处理。ColorMatrix是一个5*4的矩阵。如图所示,在android中,是以以为数组的方式存储的n = {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t}的方式进行存储。
ColorMatrix colorMatrix = new ColorMatrix(new float[]{
//没一行前4列系数的取值范围为:0.0~2.0,
//第5列的取值范围为0~255
0.5f, 0, 0, 0, 0,//R
0, 0.5f, 0, 0, 0,//G
0, 0, 0.5f, 0, 0,//B
0, 0, 0, 1, 0//A
});
paint.setColorFilter(new ColorMatrixColorFilter(colorMatrix));
PS:每一行前4列系数的取值范围为0.0~2.0
第五列的取值范围为0~255
在一张图片中,图像的RGBA(红色、绿色、蓝色、透明度)值决定了该图片所呈现出来的颜色效果。
而图像的RGBA值则存储在一个5*1的颜色分量矩阵C中,由颜色分量矩阵C可以控制图像的颜色效果。
C = [R
G
B
1]
要想改变一张图片的颜色效果,只需要改变图像的颜色分量矩阵或者改变颜色矩阵即可。
2、LightingColorFilter
顾名思义光照颜色过滤,这肯定是跟光照是有关的了。该类有且只有一个构造方法:
参数1:mul全称ColorMultiply,意思为色彩倍增。
参数2:add全称ColorAdd,意思为色彩的添加
这两个值都是16进制的色彩0xAARRGGBB
paint.setColorFilter(new LightingColorFilter(0xFFFF00FF, 0x00000000));
3、PorterDuffColorFilter
PorterDuffColorFilter跟LightingColorFilter一样,只有一个构造方法:
参数1:16进制的颜色值
参数2:Mode混合模式,PorterDuff内部类Mode中的一个常量值,这个值表示混合模式。
PorterDuffColorFilter(int color, PorterDuff.Mode mode)