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

最近在写android画图常常用到这几个什么什么To,一开始还真不知道cubicTo这个方法,更不用说能不能分清楚它们了,因此特此来作个小笔记,记录下moveTo、lineTo、quadTo、cubicTo、arcTo的做用,在自定义view的时候常常用到。
接下来也会分享下这几天写的几个东西。相信对于新手也会有点帮助,高手也帮忙看看有没错,欢迎吐槽吐槽。android

二、moveTo

moveTo 不会进行绘制,只用于移动移动画笔。
结合如下方法进行使用。canvas

三、lineTo

lineTo 用于进行直线绘制。ide

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

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

图片描述

刚才咱们不说了moveTo是用来移动画笔的吗?this

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

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

图片描述

四、quadTo

quadTo 用于绘制圆滑曲线,即贝塞尔曲线。code

mPath.quadTo(x1, y1, x2, y2) (x1,y1) 为控制点,(x2,y2)为结束点。orm

一样地,咱们仍是得须要moveTo来协助控制。coffeescript

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

效果如图:图片

图片描述

五、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);

看看效果:

QQ%E5%9B%BE%E7%89%8720141013222234.jpg

如出一辙!

若是咱们不加 moveTo 呢?

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

2014-10-13%2FQQ%E5%9B%BE%E7%89%8720141013223204.jpg

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

效果如图:

2014-10-13%2FQQ%E5%9B%BE%E7%89%8720141013223920.jpg

相关文章
相关标签/搜索