为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

illuminiti 2016-06-01 18:18:34
<!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>运行效果为什么左边会出现红圈这部分线,而右边却没有?
查看完整描述

3 回答

?
肥仔汇

TA贡献6条经验 获得超5个赞

原因如下

代码第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);


查看完整回答
1 反对 回复 2016-06-02
?
illuminiti

TA贡献1条经验 获得超0个赞

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

这样测试可以了!

查看完整回答
反对 回复 2016-06-02
?
忘性最大的人

TA贡献118条经验 获得超37个赞

需要关闭两次,负责会和之前的合到一起

查看完整回答
反对 回复 2016-06-02
  • illuminiti
    illuminiti
    用closePath()关闭?怎么用?试了还是不行!一样的方式怎么会不一样的结果呢?求指教,谢谢!
  • 3 回答
  • 0 关注
  • 1626 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信