资讯专栏INFORMATION COLUMN

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

XboxYan / 3323人阅读

摘要:效果如图同样是用来实现贝塞尔曲线的。然后,我们想绘制和上一个一样的曲线,应该怎么写呢看看效果一模一样如果我们不加呢则以为起点,和为控制点绘制贝塞尔曲线用于绘制弧线实际是截取圆或椭圆的一部分。

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)开始绘制。如图:

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

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

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

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

效果如图:

5、cubicTo

cubicTo 同样是用来实现贝塞尔曲线的。

mPath.cubicTo(x1, y1, x2, y2, x3, y3) (x1,y1) 为控制点,(x2,y2)为控制点,(x3,y3) 为结束点。

那么,cubicToquadTo 有什么不一样呢?

官方是这么说的:

  

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)为控制点绘制贝塞尔曲线:

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

效果如图:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/12188.html

相关文章

  • 高级UI特效—用SVG码造一个精美的国地图

    摘要:关于基础可以去看一下我的上一篇文章前戏让你的多姿多彩今天就用打造一个精美的效果。正文先上效果图我们都知道的文件是纯粹的。原来里面类似以的数据进行组装的。这里用是和互相结合的一个算法。 前言 来继续学习SVG,要想深入了解还是要多动手进行实战。关于svg基础可以去看一下我的上一篇文章《SVG前戏—让你的View多姿多彩》,今天就用SVG打造一个精美的UI效果。 正文 先上效果图: sho...

    余学文 评论0 收藏0
  • 前端小项目:使用canvas绘画哆啦A梦

    最近在学canvas元素,标签只是图形容器,必须使用js来绘制图形。为了增强对canvas元素的理解,于是用canvas画了一个哆啦A梦来 要实现的效果图 showImg(https://segmentfault.com/img/remote/1460000009319551?w=816&h=1106); 在线预览 要想绘画出这个哆啦a梦首先要掌握以下一些函数: arcTo() canvas绘制...

    lwx12525 评论0 收藏0
  • Android使用Path自定义波浪加载View

    摘要:为什么会写的因为这几天写的时候用到了,现在分享一个波浪加载的。最后把进度更新进度上升加上,相信这个不是难点了,定义一个接口,设置一个回调函数即可实现进度更新,进度跟着波浪上升就好了。 1、What 昨天写了一篇 blog 说了一下Path类里面的几个方法。 为什么会写的? 因为这几天写view的时候用到了,现在分享一个波浪加载的view。 2、没图没真相,上图 showImg(h...

    asoren 评论0 收藏0
  • Python画图基础操作之全注释画多啦A梦叮当猫

    摘要:一步步教你怎么用画多啦梦叮当猫,进一步熟悉的基础画图操作。分析叮当猫由头脸眼眼珠鼻子嘴胡子项带铃当身子围嘴手臂手脚组成。 一步步教你怎么用Python画多啦A梦叮当猫,进一步熟悉Python的基础画图操作。 分析:叮当猫由头、脸、眼、眼珠、鼻子、嘴、胡子、项带、铃当、身子、围嘴、手臂、手、脚...

    fox_soyoung 评论0 收藏0
  • HTML5 Canvas(基础知识)

    摘要:比如弧线或圆形从到绘制一条以为圆心,为半径的弧线,其中和用弧度表示,为时,顺时针画弧线,反之,逆时针画弧线。 最近笔者在学习HTML5的新元素,会分享一些基础知识以及小例子,最终使用实现一个绘制简单图表(条形图、线图或者饼图)的js库,会更新一到两篇文章~下面我们开始吧~ 确认宽度和高度 我们首先应该指定标签即画布的宽度和高度属性,并在开始和闭合标签之间添加后备信息: ...

    YanceyOfficial 评论0 收藏0

发表评论

0条评论

XboxYan

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<