android moveTo、lineTo、quadTo、cubicTo、arcTo详解(转)
2015-09-07 10:49
706 查看
转载请注明出处:王亟亟的大牛之路
原文出自:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0906/3425.html记录下moveTo、lineTo、quadTo、cubicTo、arcTo的作用,在自定义view的时候经常用到。
接下来也会分享下这几天写的几个东西。相信对于新手也会有点帮助,高手也帮忙看看有没错,欢迎吐槽吐槽。
moveTo
moveTo 不会进行绘制,只用于移动移动画笔。
结合以下方法进行使用。
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)处开始绘制,效果如图
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);
效果如图:
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)为控制点绘制贝塞尔曲线:
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 度 ,则所得曲线为四分之一圆的弧线。
效果如图:
Thanks for watch
相关文章推荐
- android moveTo、lineTo、quadTo、cubicTo、arcTo详解(转)
- Android 开发-Shape相关
- View绘制流程简介
- Java后台解析android端发送的JSON字符串
- Android中AES加密解密。解决密文不唯一、解密不出明文问题
- android的一些新东西
- Android记录23-关于actionbar中overflow menu(溢出菜单)中的一些问题
- 关于Android文字转语音(TTS)开发
- android 动画--帧动画--仿美团加载中小人
- android scrollview嵌套girdview显示效果不理想的问题解决
- Android EditText默认弹出和默认关闭输入法的解决方案
- 高效学习Android动画
- 9月4日 XE8移动开发入门(四)XE8在Android中调用SQLite和IBLite数据库
- android 应用性能提升
- Android开发之软键盘遮盖EditText
- 阅读《Android 从入门到精通》(1)——了解 Android 开发
- Android控件之一 (TextView)
- android-点击文字收缩效果
- Android Api Demos登顶之路(五十九)Content-->Assets
- android studio mark