012-Android自定义View(7):绘制路径Path详解

663 阅读2分钟

简介

Path可视为画笔的移动路径,or绘制路径,可以预设自定义形状的路径,供Paint直接按路径绘制图案。

常用功能

方法功能备注
moveTo(float x,float y)笔移动到x,y点未接触画布,无绘制结果产生
rMoveTo(float x,float y)基于当前笔位置(x0,y0),移动量分别为x,y,移动画笔至(x0+x ,y0+y)点未接触画布,无绘制结果产生
setLastPoint(float x,float y)改变上一步操作的末点无绘制
lineTo(float x,float y)从当前点,画线到x,y点笔接触画布,有实际绘制效果
rLineTo(float x,float y)从当前点(x0,y0),划线到(x0+x ,y0+y)点有绘制
addPath(Path src)添加路径
addPath(path src,float x,float y)src移动量(x,y)距离后再添加
addPath(Path src,Matrix matrix)先使用Matrix进行变换,再添加
close()连接Path起点和终点形成一个闭合图形
set(Path src)设置/替换 路径
offset(float dx,float dy)path平移量(x,y)
offset(float dx,float dy,Path dst)path平移后的状态存入dst不作用原path,dst为null 则作用原path
quadTo(float x1,float y1,float x2,float y2)(x1,y1)为控制点,(x2,y2)为终点
rQuadTo(float x1,float y1,float x2,float y2)(x1,y1)为控制点距离起点的偏移量,(x2,y2)为终点距离起点的偏移量
cubicTo(float x1,float y1,float x2,float y2,float x3,float y3)绘制三阶贝塞尔曲线(x1,y1)(x2,y2)为控制点(x3,y3)为终点
rCubicTo(float x1,float y1,float x2,float y2,float x3,float y3)绘制三阶贝塞尔曲线(x1,y1)(x2,y2)为控制点距离起点的偏移量,(x3,y3)为终点距离起点的偏移量
addRect(RecF rect,Path.Direction dir)画矩形
addRect(float left,float top,float right,float bottom,Path.Direction dir)画矩形
addRoundRect(RectF rect,float rx,float ry,Path.Direction dir)画圆角矩形
addRoundRect(float left,float top,float right,float bottom,float rx,float ry,Path.Direction dir)画圆角矩形
addRoundRect(RectF rect,float[] radii,Path.Direction dir)画圆角矩形
addRoundRect(float left,float top,float right,float bottom,float[] radii,Path.Direction dir)画圆角矩形
addArc(RectF oval,float startAngle,float sweepAngle)画弧
addArc(float left,float top,float right,float bottom,float startAngle,float sweepAngle)画弧
arcTo(RectF oval,float startAngle,float sweepAngle,boolean forceMoveTo)画弧
arcTo(RectF oval,float startAngle,float sweepAngle)
arcTo(float left,float top,float right,float bottom,float startAngle,float sweepAngle,boomean forceMoveTo)
addCircle(float x,float y,float radius,Path.Direction dir)画圆
addOval(RectF oval,Path.Direction dir)画椭圆
addOval(float left,float top,float right,float bottom,Path.Direction dir)椭圆