Canvas类里面有一个方法为canvas.drawPath方法,这个方法就是用来绘制我们的自定义Path对象。Path对象很有用,我们可以绘制一些特殊的动画效果,文字吸附效果等等。所以我们需要来学习下Path对象的使用。
Path类,有两个构造函数,一个无参构造函数Path()创建一个空的path,一个是带参构造函数Path(Path src)创建一个非空的带有src的Path;
成员函数:
path.addArc(RectF oval,float startAngle,float sweepAngle) 画弧线 stratAngle是只开始的角度,X轴正方向为0度,sweepAngle是持续的角度;
path.addPath(Path src,float x,float y);画一个src的Path对象,x是起始横坐标,y是起始纵坐标。
path.addOval(RectF oval,Direction dir)画圆,Direction有两类,Path.Direction.CW(顺时针画) Path.Direction.CCW(逆时针画);
path.addRect(RectF rect,Direction dir)矩形路径;
path.moveTo(float x,float y); x y是起始移动点的横坐标和纵坐标,并不画,只是将画笔移动到x y坐标
path.lineTo(float x,float y); 用于直线绘画,默认从(0,0)绘画到(x,y)
path.quadTo(float x1,float y1,float x2,float y2);用于绘制圆滑的曲线,既贝塞尔曲线,(x1,y1)为控制点,(x2,y2)为结束点。(贝塞尔曲线的形成,就比如我们把一条橡皮筋拉直,橡皮筋的头尾部对应起点和终点,然后从拉直的橡皮筋中选择任意一点(除头尾对应的点外)扯动橡皮筋形成的弯曲形状,而那个扯动橡皮筋的点就是控制点)
path.cubicTo(float x1,float y1,float x2,float y2,float x3,float y3)也是用于绘制贝塞尔曲线。(x1,y1)为控制点,(x2,y2)为控制点,(x3,y3)为结束点。比quadTo(多了一个控制点) 如要画和quadTo一样的则将第一个控制点写成起始位置即可。
path.arcTo(ovalRectF, startAngle, sweepAngle),ovalRectF为椭圆的矩形,startAngle为开始角度,sweepAngle为结束角度。
rMoveTo,rlineTo,rQuadTo,rCubicTo方法不带r的方法是基于原点坐标系(偏移量),带r的不是基于远点坐标,是基于当前坐标的(偏移量)
path.close(),闭合,曲线绘制完成后,使用该方法可以得到一个闭合的曲线。
path.setLastPoint(float x,float y) 重置最后一个点(x,y)的坐标。