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

1、Why
最近在写android画图经常用到这几个什么什么To
,一开始还真不知道cubicTo
这个方法,更不用说能不能分清楚它们了,所以特此来做个小笔记,记录下moveTo、lineTo、quadTo、cubicTo、arcTo的作用,在自定义view的时候经常用到。接下来也会分享下这几天写的几个东西。相信对于新手也会有点帮助,高手也帮忙看看有没错,欢迎吐槽吐槽。
2、moveTo
moveTo
不会进行绘制,只用于移动移动画笔。结合以下方法进行使用。
3、lineTo
lineTo
用于进行直线绘制。
mPath.lineTo(300, 300);canvas.drawPath(mPath, mPaint);

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

Paste_Image.png

刚才我们不说了moveTo
是用来移动画笔的吗?
mPath.moveTo(100, 100);mPath.lineTo(300, 300);canvas.drawPath(mPath, mPaint);

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

Paste_Image.png

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

效果如图:

Paste_Image.png

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

看看效果:

Paste_Image.png

一模一样!
如果我们不加 moveTo
呢?
则以(0,0)为起点,(100,500)和(300,100)为控制点绘制贝塞尔曲线:

Paste_Image.png

6、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 度
,则所得曲线为四分之一圆的弧线。
效果如图:

Paste_Image.png

更多相关文章

  1. 第六章、android的Drawable
  2. Android(安卓)UI系列之3D星体旋转效果
  3. Android实现在列表List中显示半透明小窗体效果的控件用法详解
  4. ImageView用作按钮是添加点击效果Selector
  5. Android(安卓)布局动画
  6. android 最简单的圆角阴影效果
  7. Android(安卓)3D旋转动画之Camera 和 Matrix
  8. Android(安卓)第三方开源SwipeToDismiss:左滑/右滑删除ListView条
  9. android 自定义RadioButton样式

随机推荐

  1. android材料设计语言
  2. android 调用js中的方法
  3. Android 应用启动闪白一下处理方法
  4. 2011.07.06——— android 安装apiDemos
  5. Android Talker(1)MAC Environment
  6. Android获取OAID设备标识
  7. Android 获取imei号码,获取手机型号和系统
  8. Android消息机制之三---Message
  9. Android 多国语言文件夹
  10. Android 设置让EditText不自动获取焦点