您的位置:首页 > 移动开发 > Android开发

Android中moveTo、lineTo、quadTo、cubicTo、arcTo详解(实例)

2015-07-10 14:14 543 查看


简单的基础学习总结,是写给自己的哦,感觉对自己有用的可以看看,然则你可略过
1、moveTo

moveTo
 不会进行绘制,只用于移动移动画笔。

结合以下方法进行使用。


2、lineTo

lineTo
 用于进行直线绘制。

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) 为结束点。

那么,
cubicTo
 和 
quadTo
 有什么不一样呢?

官方是这么说的:

Same as cubicTo, but the coordinates are considered relative to the current point on this contour.

说白了,就是多了一个控制点而已。

然后,我们想绘制和上一个一样的曲线,应该怎么写呢?
mPath.moveTo(100, 500);
mPath.cubicTo(100, 500, 300, 100, 600, 500);


看看效果:



一模一样!

如果我们不加 
moveTo
 呢?

则以(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 度
 ,则所得曲线为四分之一圆的弧线。

效果如图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  animation ui android 动画