canvas画布中beginPath和closePath的作用要点

1.画笔画完一个图案后,立即又回到了原点,所以下次如果没有beginPath,就会从原点重新开始

2.beginPath相当于让画笔从原点抬起,重新开始一个新路径,不重复走之前的路径,所以不会覆盖之前的路径

3.closePath相当于让画笔以最近的直线回到原点位置,会有路径

以下案例是画三条不一样的直线:

但是结果却出现了三条一样宽度的直线:宽度都是30

出现这种情况的原因:没有使用beginPath()

使用beginPath后的效果:

使用beginPath的代码:

html 复制代码
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <title>Document</title>
    </head>
    <body>
        <div>画三个不一样的直线</div>
        <canvas id="myCanvas" width="500" height="500"> </canvas>
    </body>
    <script>
        var canvas = document.getElementById('myCanvas')
        var ctx = canvas.getContext('2d')
        // lineWidth是改变线条的粗细,默认是一个像素
        ctx.moveTo(20, 50)
        ctx.lineTo(200, 50)
        ctx.lineWidth = 5
        ctx.stroke()
        // ctx.closePath()
        // 1.画笔画完一个图案后,立即又回到了原点,所以下次如果没有beginPath,就会从原点重新开始
        // 2.beginPath相当于让画笔从原点抬起,重新开始一个新路径,不重复走之前的路径,所以不会覆盖之前的路径
        // 3.closePath相当于让画笔以最近的直线回到原点位置,会有路径
        ctx.beginPath()
        ctx.moveTo(20, 100)
        ctx.lineTo(200, 100)
        ctx.lineWidth = 10
        ctx.stroke()
        // ctx.closePath()

        ctx.beginPath()
        ctx.moveTo(20, 150)
        ctx.lineTo(200, 150)
        ctx.lineWidth = 30
        ctx.stroke()
        // ctx.closePath()
    </script>
</html>
相关推荐
小满zs18 小时前
Next.js第十八章(静态导出SSG)
前端·next.js
CAN117718 小时前
快速还原设计稿之工作流集成方案
前端·人工智能
A242073493018 小时前
深入浅出JS事件:从基础原理到实战进阶全解析
开发语言·前端·javascript
疯狂踩坑人18 小时前
【Nodejs】Http异步编程从EventEmitter到AsyncIterator和Stream
前端·javascript·node.js
软弹19 小时前
Vue2 - Dep到底是什么?如何简单快速理解Dep组件
前端·javascript·vue.js
晴虹19 小时前
lecen:一个更好的开源可视化系统搭建项目--介绍、搭建、访问与基本配置--全低代码|所见即所得|利用可视化设计器构建你的应用系统-做一个懂你的人
前端·后端·低代码
WangHappy19 小时前
面试官:如何优化批量图片上传?队列机制+分片处理+断点续传三连击!
前端·node.js
借个火er19 小时前
Qiankun vs Wujie:微前端框架深度对比
前端
freeWayWalker19 小时前
【前端工程化】前端代码规范与静态检查
前端·代码规范
C2X19 小时前
关于Git Graph展示图的理解
前端·git