Android绘图系列(六)——自定义View之Path基本使用
来源:互联网 发布:美国亚马逊服务软件 编辑:程序博客网 时间:2024/06/06 10:48
这个系列主要是介绍下Android自定义View和Android绘图机制,自己能力有限,如果在介绍过程中有什么错误,欢迎指正
一.Path常用操作
reset不保留内部数据结构,但会保留FillType.
rewind会保留内部的数据结构,但不保留FillType 矩阵操作 transform 矩阵变换
二.Path使用
2.1 绘制直线路径
绘制直线需要了解以下几个方法:
void moveTo (float x1, float y1):直线的开始点;即将直线路径的绘制点定在(x1,y1)的位置;void lineTo (float x2, float y2):直线的结束点,又是下一次绘制直线路径的开始点;lineTo()可以一直用;void close ():如果连续画了几条直线,但没有形成闭环,调用Close()会将路径首尾点连接起来,形成闭环;
OK,接下来我们就实际操作下
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE);//填充样式改为描边 paint.setStrokeWidth(5);//设置画笔宽度 paint.setColor(Color.BLUE); Path path = new Path(); path.moveTo(100, 100);//以(100,100)为起点 path.lineTo(100, 500);//从(100,100)到(100.500)绘制一条直线 path.lineTo(500, 500);//从(100,500)到(500,500)绘制一条直线 path.close();//闭环 canvas.drawPath(path, paint); }
效果图
2.22绘制矩形路径
绘制方法:
void addRect (float left, float top, float right, float bottom, Path.Direction dir)void addRect (RectF rect, Path.Direction dir)
这里Path类创建矩形路径的参数与上篇canvas绘制矩形差不多,唯一不同的一点是增加了Path.Direction参数;
Path.Direction有两个值:
Path.Direction.CCW:是counter-clockwise缩写,指创建逆时针方向的矩形路径;Path.Direction.CW:是clockwise的缩写,指创建顺时针方向的矩形路径;
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE);//填充样式改为描边 paint.setStrokeWidth(5);//设置画笔宽度 paint.setColor(Color.BLUE); //第一个逆向生成 Path CCWRectpath = new Path(); RectF rect1 = new RectF(50, 50, 240, 200); CCWRectpath.addRect(rect1, Path.Direction.CCW); //第二个顺向生成 Path CWRectpath = new Path(); RectF rect2 = new RectF(290, 50, 480, 200); CWRectpath.addRect(rect2, Path.Direction.CW); canvas.drawPath(CCWRectpath, paint); canvas.drawPath(CWRectpath, paint); }
效果图
三.绘制圆角矩形路径
绘制方法:
void addRoundRect (RectF rect, float[] radii, Path.Direction dir)void addRoundRect (RectF rect, float rx, float ry, Path.Direction dir)
这里有两个构造函数,部分参数说明如下:
第一个构造函数:可以定制每个角的圆角大小:
float[] radii:必须传入8个数值,分四组,分别对应每个角所使用的椭圆的横轴半径和纵轴半径,如{x1,y1,x2,y2,x3,y3,x4,y4},其中,x1,y1对应第一个角的(左上角)用来产生圆角的椭圆的横轴半径和纵轴半径,其它分别代表左下,右下,右上
第二个构造函数:只能构建统一圆角大小
float rx:所产生圆角的椭圆的横轴半径;
float ry:所产生圆角的椭圆的纵轴半径
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //设置Paint Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE);//填充样式改为描边 paint.setStrokeWidth(5);//设置画笔宽度 paint.setColor(Color.BLUE); Path path = new Path(); RectF rect1 = new RectF(50, 50, 240, 200); //所有圆角大小相同 path.addRoundRect(rect1, 10, 15 , Path.Direction.CCW); RectF rect2 = new RectF(290, 50, 480, 200); //指定四个圆角不同大小 float radii[] ={10,15,20,25,30,35,40,45}; path.addRoundRect(rect2, radii, Path.Direction.CCW); canvas.drawPath(path, paint); }
效果图
四.绘制圆路径
绘制方法
void addCircle (float x, float y, float radius, Path.Direction dir)
参数说明:
float x:圆心X轴坐标
float y:圆心Y轴坐标
float radius:圆半径
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint=new Paint(); paint.setStyle(Paint.Style.STROKE); paint.setColor(Color.BLUE); paint.setStrokeWidth(5); Path path=new Path(); path.addCircle(500,500,200, Path.Direction.CCW); canvas.drawPath(path,paint); }
效果图
五.绘制椭圆路径
绘制方法
void addOval (RectF oval, Path.Direction dir)
参数说明:
RectF oval:生成椭圆所对应的矩形
Path.Direction :生成方式,与矩形一样,分为顺时针与逆时针
Paint paint=new Paint(); paint.setStyle(Paint.Style.STROKE); paint.setColor(Color.BLUE); paint.setStrokeWidth(5); Path path=new Path(); RectF rect = new RectF(100, 109, 200, 300); path.addOval(rect, Path.Direction.CCW); canvas.drawPath(path,paint);
效果图
六.绘制弧形路径
绘制方法
void addArc (RectF oval, float startAngle, float sweepAngle)
参数:
RectF oval:弧是椭圆的一部分,这个参数就是生成椭圆所对应的矩形;
float startAngle:开始的角度,X轴正方向为0度
float sweepAngel:持续的度数;
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint=new Paint(); paint.setStyle(Paint.Style.STROKE); paint.setColor(Color.BLUE); paint.setStrokeWidth(5); Path path=new Path(); RectF rect=new RectF(100,100,200,300); path.addArc(rect,0,180); canvas.drawPath(path,paint); }
效果图
Github地址
0 0
- Android绘图系列(六)——自定义View之Path基本使用
- Android绘图系列(二)——自定义View绘制基本图形
- Android绘图系列(一)——自定义View基础
- Android绘图系列(三)——自定义View绘制仪表盘
- 自定义View-绘图基础之Path
- Android自定义控件之二 使用path绘图
- android 自定义View之Path
- Android 自定义View——Path的使用
- Android 自定义View——Path的使用
- 自定义控件三部曲之绘图篇(六)——Path之贝赛尔曲线和手势轨迹、水波纹效果
- 自定义控件三部曲之绘图篇(六)——Path之贝赛尔曲线和手势轨迹、水波纹效果
- 自定义控件三部曲之绘图篇(六)——Path之贝赛尔曲线和手势轨迹、水波纹效果
- 自定义控件之绘图篇(六) —— Path之贝赛尔曲线和手势轨迹、水波纹效果
- 自定义View之绘图篇(二):路径(Path)
- 自定义View之绘图篇(二):路径(Path)
- Android绘图:自定义View——路径(Path)、贝塞尔曲线(绘制可动的波浪线)、Bitmap
- Android 自定义View绘图篇之基础
- Android 自定义View绘图篇之进阶
- MFC——句柄的获取
- Activity的生命周期和启动模式
- PAT甲级1027. Colors in Mars (20)
- 一个关于vector和string使用的一个程序,可以参考一下
- Qt发布(三)------webkit模块的裁剪
- Android绘图系列(六)——自定义View之Path基本使用
- unity-zip压缩与解压
- 文字滚动
- 负载均衡之数据链路层
- 单例模式 回顾
- java19
- 怎么查看一个网站的ip地址?
- android studio技巧
- Linux网络杂记