Android Path中绘制的折线如何变得很平滑
2017-10-23 15:23
288 查看
多个点可以连成一个折线,如何将折线的拟合处变为曲线,使得整个线看上去更加平滑呢?
方法1:
Paint.setStrokeJoin(Paint.Join.ROUND)
这个方法可以将path中所有线段的Join方式设置为ROUND,实际效果就是拟合处变成了更加平滑的曲线;
方法2:
CornerPathEffect cornerPathEffect = new CornerPathEffect(200);
Paint.setPathEffect(cornerPathEffect);
此处的200就是平滑的度数;
方法3:
自己去实现,原理很简单,就是在两条线段相连的地方
原始做法:
moveTo(x1,y1);
lineTo(x2,y2);
lineTo(x3,y3);
此时就是两条线段相连;
平滑做法:
moveTo(x1,y1);
lineTo(x21,y21);(x21,y21)是(x1,y1)–(x2,y2)上的一个点,很接近(x2,y2);
quadTo(x31,y31);(x31,y31)是(x2,y2)–(x3,y3)上的一个点,很接近(x2,y2);
lineTo(x3,y3);
具体实现上还要考虑很多,例如两条线段的长度啊,形成的角度等等;
PS:推荐使用第一种,实现简单,而且不需要像方法2那样设置一个固定的角度(设置固定角度的效果不是很适用于所有角度的折线);
方法1:
Paint.setStrokeJoin(Paint.Join.ROUND)
这个方法可以将path中所有线段的Join方式设置为ROUND,实际效果就是拟合处变成了更加平滑的曲线;
方法2:
CornerPathEffect cornerPathEffect = new CornerPathEffect(200);
Paint.setPathEffect(cornerPathEffect);
此处的200就是平滑的度数;
方法3:
自己去实现,原理很简单,就是在两条线段相连的地方
原始做法:
moveTo(x1,y1);
lineTo(x2,y2);
lineTo(x3,y3);
此时就是两条线段相连;
平滑做法:
moveTo(x1,y1);
lineTo(x21,y21);(x21,y21)是(x1,y1)–(x2,y2)上的一个点,很接近(x2,y2);
quadTo(x31,y31);(x31,y31)是(x2,y2)–(x3,y3)上的一个点,很接近(x2,y2);
lineTo(x3,y3);
具体实现上还要考虑很多,例如两条线段的长度啊,形成的角度等等;
PS:推荐使用第一种,实现简单,而且不需要像方法2那样设置一个固定的角度(设置固定角度的效果不是很适用于所有角度的折线);
相关文章推荐
- Android Path中绘制的折线如何变得很平滑
- 前端html如何绘制折线图、条形图、饼图
- .NET : 如何利用GDI+绘制折线图
- 基于Skyline的TerraExplorer6.1.1如何通过二次开发实现折线和多边形对象的手动绘制
- 使用aChartEngine绘制折线图如何设置背景色?
- 如何使用Core Plot绘制直方图和折线图
- 百度地图,如何绘制不同样式的折线
- 如何绘制平滑的反走样线
- Python如何对折线进行平滑曲线处理?
- .NET : 如何利用GDI+绘制折线图
- 如何使用MATLAB绘制平滑曲线
- 如何绘制工具栏右边区域
- VS2010下如何利用TeeChart绘制三维图
- 测试:如何让自己变得优秀
- 【C#】第3章补充(一)如何在WPF中绘制正弦曲线
- 如何绘制 UML 活动图
- 微码汇教你如何让微营销变得性感
- 详解如何使用PM2将Node.js的集群变得更加容易
- Android 系列 5.4徒手绘制平滑曲线
- matplotlib如何在绘制时间序列时跳过无数据的区间