html5 - lineTo 画出来的线有锯齿,怎么样才能平滑一些
天蓬老师
天蓬老师 2017-04-17 11:58:54
[HTML讨论组]
<!DOCTYPE html>
<html>
<head>

</head>
<body>

<canvas id="a" width="1300" height="150" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas><br/>

<canvas id="b" width="1300" height="150" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas><br/>
<script>

var data=[111, 21, 51, 71, 51, 31, 101, 31, 31, 51, 1, 11, 131, 61, 11, 141, 121, 111, 11, 1, 111, 71, 141, 141, 91, 131, 81, 21, 31, 71, 141, 41, 11, 31, 61, 11, 61, 101, 91, 21, 81, 141, 51, 91, 61, 71, 81, 91, 21, 21];
var a=document.getElementById("a").getContext("2d");
var b=document.getElementById("b").getContext("2d");

var interval=30;
a.strokeStyle='darkgreen';
for(var i=1;i<data.length-1;i++){
a.moveTo((i-1)*interval,150-data[i-1]);

a.lineTo(i*interval,150-data[i]);

a.stroke();
}

b.strokeStyle='firebrick';
b.beginPath();
for(var i=1;i<data.length-1;i++){
b.moveTo((i-1)*interval,150-data[i-1]);

b.quadraticCurveTo((i+1)*interval,150-data[i+1],(i)*interval,150-data[i]);

b.stroke();
}

</script> 

</body>
</html>

lineTo 画出来的线有锯齿,如果用quadraticCurveTo 这个控制点怎么算才能平滑一点?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
PHP中文网

虽然不知为何,但是把 a.stroke() 移到循环外即可让线变正常点。大概是你需要保证每个 path 只被 stroke 一次,而若需要新的 path,就要调用 beginPath(或者 closePath 如果适合的话)。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号