说说canvas吧(一):paint

来源:互联网 发布:淘宝抢月饼 编辑:程序博客网 时间:2024/05/29 14:29

paint

也就是画笔,做过自定义组件的都知道,自定义组件中,画笔是重中之中,掌握好画笔非常重要
下面我说说画笔的一些比较实用的操作吧

1设置color

Paint.setColor(Color.Red);

这个方法就不多说了,就是设置画笔颜色,当然,你要是要自定义颜色可以用mPaint.setColor(Color.parseColor(“#ff5a5f”));

2设置画笔宽度

mPaint.setStrokeWidth(30);

这个就是设置画笔的宽度,

3设置抗锯齿,

这个方法很有用,特别是画图案的时候,可以减少毛糙

textPaint.setAntiAlias(true);

4设置画笔笔头样式

setStrokeCap(Paint.Cap.ROUND);

画笔笔头一共有三种模式,
1.SQUARE:平头,但是长一些
2.BUTT:平头
3.ROUND:圆头
这里写图片描述
其中圆头很多地方很有用,比如画一些进度条什么的

5设置渐变模式shader
渐变模式非常有趣,可以辅助你做出一些非常绚丽的模式,比如我上一章做出的小米时钟就是用shader做的
shader的使用方法为

paint.setShader(mshader);

其中mshader为你新创建的shader对象,shader有多种对象可以创建
1:线性渐变
创建方式为:

mshader=new LinearGradient(100,100,500,500,Color.parseColor("#E91E61"),Color.parseColor("#2196F3"),Shader.TileMode.CLAMP);

这个方法有七个参数,其中100,100,500,500,其实是代表一个矩形区域,从坐标(100,100)到(500,500)的一个正方形区域,而后面两个颜色代表的是渐变的起始和结束颜色,最后的hader.TileMode.CLAMP是渐变着色规则,
TileMode一共有三种模式
clamp模式:
这里写图片描述

mirror模式:
这里写图片描述

repeat模式:
这里写图片描述

其中上面的线性渐变要是化一个圆,那么就会像下面这样:

Shader mshader=new LinearGradient(100,100,500,500,Color.parseColor("#E91E61"),Color.parseColor("#2196F3"),Shader.TileMode.CLAMP);mpaint.setShadr(mshader);canvas.drawCircle(300,300,200,mpaint);

效果图:
这里写图片描述

2RadialGradient 辐射渐变

shader=new RadialGradient(300,300,200,Color.parseColor("#E91E61"),Color.parseColor("#2196F3"),Shader.TileMode.CLAMP)

方法解释,前两个参数的300,300是代表辐射的圆心位置,后面的200是这个辐射的范围,再后面两个参数是辐射起始和结束颜色,最后还是着色规则
这里写图片描述

3SweepGradient扫描渐变

shader=new SweepGradient(300,300,Color.parseColor("#E91E61"),Color.parseColor("#2196F3"),Shader.TileMode.CLAMP)

方法解释,这个方法也是以圆心开始渐变,但是没有范围,所以只有圆心位置设置而已
效果如下
这里写图片描述

4ComposeShader 混合渐变,可以将两个shader一起使用

Shader shader=new ComposeShader(shader1,shader2,ProterDuff.Mode.SRC_OVER);

至于ProterDuff的模式如下图
这里写图片描述

5设置画笔风格

画笔风格一种有两种,一种是填充,一种是线条

paint.setStyle(Paint.Style.FILL)//实心paint.setStyle(Paint.Style.STROKE)//中心线条

这里写图片描述这里写图片描述

6还有好多,晚点在写吧。。。