Path的moveTo、lineTo、quadTo、cubicTo、arcTo作用

来源:互联网 发布:网址导航程序源码 编辑:程序博客网 时间:2024/06/05 14:43

1.moveTo

moveTo 不会进行绘制,只用于移动移动画笔。一般和其他方法配合使用。

mPath.moveTo(100, 100);

2.linTo

linTo一般用于绘制直线

mPath.lineTo(300, 300);canvas.drawPath(mPath, mPaint);

默认从坐标(0,0)开始绘制。如图:

如果配合moveTo()使用的话,

mPath.moveTo(100, 100);mPath.lineTo(300, 300);canvas.drawPath(mPath, mPaint);

把画笔移动(100,100)处开始绘制,效果如图:

3.quadTo

quadTo 用于绘制圆滑曲线,即贝塞尔曲线。
mPath.quadTo(x1, y1, x2, y2) (x1,y1) 为控制点,(x2,y2)为结束点。
同样地,我们还是得需要moveTo来协助控制。

mPath.moveTo(100, 500);mPath.quadTo(300, 100, 600, 500);canvas.drawPath(mPath, mPaint);

效果如图:

4.cubicTo

cubicTo 同样是用来实现贝塞尔曲线的。

mPath.cubicTo(x1, y1, x2, y2, x3, y3) (x1,y1) 为控制点,(x2,y2)为控制点,(x3,y3) 为结束点。
比quadTo多了一个控制点

mPath.cubicTo(100, 500, 300, 100, 600, 500);

以(0,0)为起点,(100,500)和(300,100)为控制点绘制贝塞尔曲线:

5.arcTo

arcTo 用于绘制弧线(实际是截取圆或椭圆的一部分)。

mPath.arcTo(ovalRectF, startAngle, sweepAngle) , ovalRectF为椭圆的矩形,startAngle 为开始角度,sweepAngle 为结束角度。

mRectF = new RectF(10, 10, 600, 600);mPath.arcTo(mRectF, 0, 90);canvas.drawPath(mPath, mPaint);

由于new RectF(10, 10, 600, 600)为正方形,又截取 0 ~ 90 度 ,则所得曲线为四分之一圆的弧线。
效果如图:

0 0
原创粉丝点击