自定义View(一)---Paint

来源:互联网 发布:打谱软件手机版 编辑:程序博客网 时间:2024/05/22 04:26

一、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)  
0 0
原创粉丝点击