前言
最近用Path的moveTo、lineTo、quadTo,也想整理一下,但看到网上已经有人整理了,就摘抄于此,方便自己查阅。
好记性不如烂笔头
正文
一下内容摘抄的,原文请访问文末连接。
moveTo
moveTo 不会进行绘制,只用于移动移动画笔。
就看做移动光标吧。
lineTo
画线
mPath.lineTo(300, 300);
canvas.drawPath(mPath, mPaint);
参数中的(300,300)是线的结束点,开始的位置就是看mPath的位置初始位置,如果没有moveTo,那么位置就是原点(0,0)。
比如:
mPath.moveTo(100, 100);
mPath.lineTo(300, 300);
canvas.drawPath(mPath, mPaint);
上面操作后,此时的画线的开始点是(100,100)结束点是(300,300)
quadTo
quadTo 用于绘制圆滑曲线,即贝塞尔曲线。
mPath.quadTo(x1, y1, x2, y2)
(x1,y1) 为控制点,(x2,y2)为结束点。
PS: 第一个是控制点咯,这个很重要。原点还是画笔的上一个结束点。
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) 为结束点。
至于跟quadTo的区别,大概是多了一个控制点。
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 度 ,则所得曲线为四分之一圆的弧线。
参考文章
© 版权声明