求指教!canvas绘制路径的问题?

<!DOCTYPE html>
<html>
<body>

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

<script>

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.moveTo(150,5);
ctx.lineTo(150,145);
ctx.arc(100,75,50,0,0.25*Math.PI);
//ctx.beginPath();
ctx.moveTo(50,5);
ctx.lineTo(50,145);
ctx.arc(100,75,50,0.75*Math.PI,1*Math.PI);
//ctx.closePath();
ctx.stroke();
ctx.closePath();

</script> 

</body>
</html>

运行效果http://img.mukewang.com/574eb622000116f503190228.jpg

为什么左边会出现红圈这部分线,而右边却没有?

illuminiti
浏览 1657回答 3
3回答

肥仔汇

原因如下代码第20行ctx.arc(100,75,50,0.75*Math.PI,1*Math.PI);所画的圆起点不在直线上CANVAS自动把竖线和起点连起来了所以才会出现这一段解决方案ctx.arc(100,75,50,1*Math.PI,0.75*Math.PI,true);

illuminiti

ctx.beginPath(); ctx.moveTo(150,5); ctx.lineTo(150,145); ctx.stroke(); ctx.closePath(); ctx.beginPath(); ctx.arc(100,75,50,0,0.25*Math.PI); ctx.stroke(); ctx.closePath(); ctx.beginPath(); ctx.moveTo(50,5); ctx.lineTo(50,145); ctx.stroke(); ctx.closePath(); ctx.beginPath(); ctx.arc(100,75,50,0.75*Math.PI,1*Math.PI); ctx.stroke(); ctx.closePath();这样测试可以了!

忘性最大的人

需要关闭两次,负责会和之前的合到一起
打开App,查看更多内容
随时随地看视频慕课网APP