Path表示点的运行轨迹。
移动画笔到某个坐标
//移动到某个点,不绘制
void moveTo(float x, float y);
相当于把笔抬起来,移动到下一个想要绘制的地方。x为要移动到位置的横坐标,y为要移动到位置的纵坐标。
void rMoveTo(float dx, float dy);
用法和moveTo()方法类似,坐标参照点由(0,0)变更为上一步操作画笔停留的位置,你可以将其想象成(0,0)。
移动画笔画一条直线
//绘制一条直线路径
void lineTo(float x, float y);
画条线到(x,y)。
void rLineTo(float dx, float dy);
用法和lineTo()方法类似,坐标参照点由(0,0)变更为上一步操作画笔停留的位置,你可以将其想象成(0,0)。
移动画笔画一条贝瑟尔二阶曲线
//绘制一条二阶贝瑟尔曲线路径
void quadTo(float x1, float y1, float x2, float y2);
(x1,y1)为控制点的坐标,(x2,y2)为结束点的坐标。
void rQuadTo(float dx1, float dy1, float dx2, float dy2);
用法和quadTo()方法类似,坐标参照点由(0,0)变更为上一步操作画笔停留的位置,你可以将其想象成(0,0)。
移动画笔画一条贝瑟尔三阶曲线
//绘制一条三阶贝瑟尔曲线路径
void cubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
(x1,y1)为第一个控制点的坐标,(x2,y2)为第二个控制点的坐标,(x3,y3)为结束点的坐标。
void rCubicTo(float x1, float y1, float x2, float y2, float x3, float y3);
用法和cubicTo()方法类似,坐标参照点由(0,0)变更为上一步操作画笔停留的位置,你可以将其想象成(0,0)。
移动画笔画一条圆弧路径
//绘制一条圆弧路径
void arcTo(float left, float top, float right, float bottom, float startAngle, float sweepAngle, boolean forceMoveTo);
left、top、right、bottom为所绘制圆弧的限定范围。startAngle为矩形内切椭圆的旋转角的开始角度。sweepAngle为顺时针扫过的角度。forceMoveTo如果为true的话,上个阶段点的位置直接move到圆弧绘制的起始位置,反之,则还要从上个阶段点的位置绘制一条直线到圆弧的起始位置,相当于调了一次lineTo()方法。
关闭路径
//关闭路径
void close();
连接Path的起始点和结束点,组成封闭图形。
设置填充类型
//设置填充类型
void setFillType(FillType ft);
FillType有以下几个枚举值,Path.FillType.WINDING、Path.FillType.EVEN_ODD、Path.FillType.INVERSE_WINDING和Path.FillType.INVERSE_EVEN_ODD。
添加形状
//添加一个矩形的路径
void addRect(RectF rect, Direction dir);
dir有两个枚举值,Path.Direction.CW(顺时针)和Path.Direction.CWW(逆时针),这个值要起作用,需要调用canvas.drawTextOnPath()方法,否则顺时针画跟逆时针画封闭图形没区别,如果路径上有文字就不一样了,因为文字不一定占满整个封闭图形的路径。
//添加一个椭圆的路径
void addOval(RectF oval, Direction dir);
用法类似于addRect()。
//添加一个圆形的路径
void addCircle(float x, float y, float radius, Direction dir);
用法类似于addRect()。
//添加一个圆角矩形的路径
void addRoundRect(RectF rect, float rx, float ry, Direction dir);
用法类似于addRect()。
//添加一个圆弧的路径
void addArc(RectF oval, float startAngle, float sweepAngle);
startAngle为矩形内切椭圆的旋转角的开始角度。sweepAngle为顺时针扫过的角度。
//路径偏移
void offset(float dx, float dy);
dx为路径在x轴上偏移的距离,左负有正,dy为路径在y轴上平移的距离,上负下正,原路径不保留。
给路径添加路径
//给路径再添加一个路径
void addPath(Path src, float dx, float dy);
dx为路径在x轴上偏移的距离,左负有正,dy为路径在y轴上平移的距离,上负下正。参照offset()方法,偏移后多了添加一个Path的过程,但不代表坐标原点(0,0)以偏移后的位置做参照,后面添加的src不受偏移过程的影响。
检测点是否在路径范围内
boolean contains(int x, int y);
判断点P(x,y)是否在Path范围内。
boolean contains(Rect r);
判断矩形r是否属于当前Path,即r的所有点是否都落在Path范围内。