自定义View(一)---Paint

一、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)  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值