一起Talk Android吧(第四百一十回:绘制曲线)
Posted talk_8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起Talk Android吧(第四百一十回:绘制曲线)相关的知识,希望对你有一定的参考价值。
文章目录
各位看官们,大家好,上一回中咱们说的例子是"绘制不规则图形",这一回咱们介绍的例子是" 绘制曲线"。闲话休提,言归正转,让我们一起Talk android吧!
看官们,我们在前面章回中介绍了如何绘制直线,绘制方法有两种:
- 直接使用画布的drawLine()方法;
- 在路径中添加关键点再通过路径画直线;
本章回中主要介绍如何绘制曲线。绘制曲线的整体思路和通过路径绘制直线的思路相同,只是我们修改了路径的效果,进而达到曲线效果,修改路径效果使用的是setPathEffect
()方法。通过修改路径效果还可以实现虚线,接下来我们分别介绍具体的实现步骤。
画曲线
整体思路:在路径中添加关键点,然后修改路径的效果,最后通过路径绘制曲线。修改路径效果使用的是setPathEffect
()方法。给该方法传递一个圆角效果的参数就可以达到绘制曲线的效果,注意,如果两个点在同一方向上,则效果仍然为直线。下面是一个正弦波的示例,请大家参考:
//画一个正弦波形
path.moveTo(100,400);
path.lineTo(100+40,400-100);
path.lineTo(100+40+40,400-100+100);
path.lineTo(100+40+40+40,400-100+100+100);
path.lineTo(100+40+40+40+40,400-100+100+100-100);
//使用路径的圆角效果来画曲线,类的参数为圆角的半径,半径越大圆角的弧形越明显
PathEffect effect = new CornerPathEffect(200);
mArcPaint.setPathEffect(effect);
canvas.drawPath(path,mArcPaint);
画虚线
画虚线和画曲线的方法完全相同,不同点在于使用了不同的路径效果,具体的示例代码如下:
//第1,2,3个虚线的长度依次为5,10,5,第二个参数是虚线距离起点的偏移值
PathEffect effect = new DashPathEffect(new float[]10,5,20,10,10,5,0);
mArcPaint.setPathEffect(effect);
canvas.drawPath(path,mArcPaint);
把此效果替换到任意的直线路径中就会得到一个虚线。此外,此效果中可以控制实线和虚线的长度,进面得到间隔不同的虚线.
路径效果组合
我们还可以把路径进行组合得到复合的效果,下面的代码显示了如何绘制一个虚线形式的正弦波
//使用路径的圆角效果来画曲线,类的参数为圆角的半径,半径越大圆角的弧形越明显
PathEffect effect1 = new CornerPathEffect(200);
//使用路径的虚线效果来画虚线,类的第一个参数为虚线中的室实线和长度,比如示例代码中第1,2,3个实线的长度依次为10,20,10,
//第1,2,3个虚线的长度依次为5,10,5,第二个参数是虚线距离起点的偏移值
PathEffect effect2 = new DashPathEffect(new float[]10,5,20,10,10,5,0);
//使用路径组合,效果是生成一个虚线的正弦波形,注意这两个效果有先后顺序,调整顺序后就达不到组合效果了
PathEffect effect = new ComposePathEffect(effect2,effect1);
看官们,关于Android中"绘制曲线"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!
以上是关于一起Talk Android吧(第四百一十回:绘制曲线)的主要内容,如果未能解决你的问题,请参考以下文章
一起Talk Android吧(第四百一十六回:绘制正弦波总结)
一起Talk Android吧(第四百一十五回:使用圆弧绘制正弦波)
一起Talk Android吧(第四百一十三回:使用三角函数绘制正弦波)