我觉得this.ctx.closePath();是多余的,不知老师为啥要闭合路径

我觉得this.ctx.closePath();是多余的,不知老师为啥要闭合路径

        canvasLock.prototype.drawLine = function(po) {// 解锁轨迹
            this.ctx.beginPath();
            this.ctx.lineWidth = 3;
            this.ctx.moveTo(this.lastPoint[0].x, this.lastPoint[0].y);
            for (var i = 1 ; i < this.lastPoint.length ; i++) {
                this.ctx.lineTo(this.lastPoint[i].x, this.lastPoint[i].y);
            }
            this.ctx.lineTo(po.x, po.y);
            this.ctx.stroke();
            this.ctx.closePath();
        }
        canvasLock.prototype.drawPoint = function() { // 初始化圆心 
            for (var i = 0 ; i < this.lastPoint.length ; i++) {
                this.ctx.fillStyle = '#CFE6FF';
                this.ctx.beginPath();
                this.ctx.arc(this.lastPoint[i].x, this.lastPoint[i].y, this.r / 2, 0, Math.PI * 2, true);
                this.ctx.closePath();
                this.ctx.fill();
            }
        }

我粘贴的,出现了2次

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,非常抱歉,老师又测试了下,是只去掉闭合,不去掉开始是吗?如果是这样的话,是没有影响的哦。

祝学习愉快~

好帮手慕糖 2020-03-02 19:00:50

同学你好,因为在连线之前,最后一个画的是,最后的一个圆。所以再次画的时候,对上次没有闭合的产生了影响。

如下:一个开始一个闭合闭合,都是需要的,去掉之后,还是有的影响,还是填充的影响,可以分别测试下。

http://img1.sycdn.imooc.com//climg/5e5ce5f4092a597203060151.jpg

建议:这里可以不用深究哦,主要是记着画完一个,然后闭合下就可以了。

祝学习愉快~

好帮手慕糖 2020-03-02 14:21:37

同学你好,若是不闭合的话,经常会对上一个画图结束的位置产生影响,如下,若是圆心这不闭合,手动画的时候,最后的一个圆心这里就有影响,所以最好还是画完之后闭合下。

http://img1.sycdn.imooc.com//climg/5e5ca5950990291f02810217.jpg

如果我的回答帮助了你,欢迎采纳,祝学习愉快~

  • 提问者 迷失的小麦 #1
    为什么会影响到最后一个圆?不太理解哪段代码起的作用?
    2020-03-02 15:29:29
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师