beginPath的作用很简单,就是开始一段新的路径,但在使用canvas绘图的过程中却非常重要

先来看一小段代码:

var ctx=document.getElementById("canvas").getContext("2d");ctx.beginPath();ctx.rect(150,150,100,100);ctx.fillStyle="green";ctx.fill();ctx.rect(0,0,100,100);ctx.fillStyle="yellow";ctx.fill();

我们的代码没有错误,但得到的却是两个边长100px的黄色的正方形,而不是一绿一黄,这是为什么呢?

事实上,canvas中的绘制方法(fill,stoke),都会以上一次“beginPath”之后的所有路径进行绘制,在上面的代码中第一个矩形fill了两次,第一次绿色,第二次黄色,所以得到了两个黄色矩形,同样的对于画线段,或其他曲线,图形,不管你moveTo到哪,只要你没有beiginPath,你都是在画一条路径。

如果你画的图形和你想象的不一致,记得查看一下beginPath。


谈到beginPath就不得不提一下closePath,事实上两者并无关系,closePath的意思是关闭路径,不是结束路径,它只是将路径的终点与起点相连,不是开始一个新路径。

我们在上面代码中第一个fill的后面添加一个closePath,得到的仍是两个黄色矩形。

但我们在后面添加一个beginPath,则得到两个不同颜色的矩形。

总而言之,不要试图通过闭合一段路径来开始新的路径,而且如果你不闭合路径,即使开始新的路径,其也不会闭合。

更多专业前端知识,请上 【猿2048】www.mk2048.com

浅谈HTML5中canvas中的beginPath()和closePath()的重要性相关推荐

  1. h5 vr效果_浅谈html5在vr中的应用

    使用过HTML5制作动画过程的开发者都知道,HTML5页面给人一种逼真的感觉,同时HTML也是可以制作VR页面,但是需要你熟练HTML5与JavaScript开发过程,所以在有必要的情况下,我们可以用 ...

  2. html5中的css特性,浅谈HTML5 CSS3的新交互特性

    本文标题的这副图片,是用phosotshop制作的.但是,在搜索引擎中你却无法搜索到它,搜索引擎还没有强大到能够识别图片里面的文字.并且由于图片的体积不算太小,可能网速慢的网友在浏览的时候不得不耐心的 ...

  3. python语法中infile语句_浅谈pymysql查询语句中带有in时传递参数的问题

    直接给出例子说明: cs = conn.cursor() img_ids = [1,2,3] sql = "select img_url from img_url_table where i ...

  4. 计算机技术在农业上应用论文,浅谈计算机在农业中的应用论文(2)

    浅谈计算机在农业中的应用论文篇二 <计算机技术在农业管理中的科学应用> 摘要:文章依据现代农业管理思想的内涵结合计算机应用技术的充分优势展开了如何在农业管理中全面应用计算机技术实现数字化. ...

  5. 浅谈线程池(中):独立线程池的作用及IO线程池

    在上一篇文章中,我们简单讨论了线程池的作用,以及CLR线程池的一些特性.不过关于线程池的基本概念还没有结束,这次我们再来补充一些必要的信息,有助于我们在程序中选择合适的使用方式. 独立线程池 上次我们 ...

  6. php编码 js解码,浅谈php和js中json的编码和解码

    php中 1)编码 $jsonstr = json_encode($array) 2)解码 $arr = json_decode($jsonstr) echo json_encode("中文 ...

  7. python查询数据库带逗号_浅谈pymysql查询语句中带有in时传递参数的问题

    直接给出例子说明: cs = conn.cursor() img_ids = [1,2,3] sql = "select img_url from img_url_table where i ...

  8. 谈计算机知识对学生的作用,浅谈计算机在教学中的作用

    浅谈计算机在教学中的作用 时间:2017-07-19 08:54:57 浅谈计算机在教学中的作用 计算机基础教育的教学目标是使学生掌握计算机的基本知识和操作技能,把计算机作为获取和交流信息的工具,为学 ...

  9. 浅谈surging服务引擎中的rabbitmq组件和容器化部署

    1.前言 上个星期完成了surging 的0.9.0.1 更新工作,此版本通过nuget下载引擎组件,下载后,无需通过代码build集成,引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎 ...

  10. python模型保存save_浅谈keras保存模型中的save()和save_weights()区别

    今天做了一个关于keras保存模型的实验,希望有助于大家了解keras保存模型的区别. 我们知道keras的模型一般保存为后缀名为h5的文件,比如final_model.h5.同样是h5文件用save ...

最新文章

  1. JavaScript面向对象编程
  2. 解码以色列人工智能产业:正在崛起的竞争者
  3. CMB/宇宙学中相关仪器设备和术语
  4. awk -f 分隔符 命令_千面 awk
  5. Maven_在Eclipse中执行Maven命令
  6. c# 去除转义符号_c#语法
  7. lcfirst_PHP lcfirst()函数与示例
  8. python class用法理解_Python小世界:彻底搞懂Python一切皆对象!
  9. DX10 Shadow Volumn Sample Code的Bug修正
  10. 【华为云技术分享】如何览遍“数字中国”的现在与未来?云上智慧地图来支招
  11. vscode开发环境
  12. linux 汽车仪表软件架构,基于嵌入式Linux的汽车全数字仪表界面的设计
  13. ,PLCSIM、SIMIT、Amesim、NX MCD、 Process Simulate、Plant Simulation,一文带你了解西门子整个虚拟调试与仿真软硬件体系
  14. CVPR 2018 微表情识别论文
  15. beacon帧主要结构
  16. Bootloader的启动
  17. vue图片时间轴滑动_vue时间轴风格式的图片展示
  18. pymysql.err.OperationalError: (1136, “Column count doesn‘t match value count at row 1“)报错反省。
  19. Java封装和多态作业
  20. 计算机如何增加网络地址,如何添加网络打印机到电脑

热门文章

  1. 简单c语言课设计题目,C语言课程设计题目
  2. 前端实现可绘制的canvas画布_前端图形学基础(五)——Canvas状态管理
  3. python线性回归x可以数量不一样吗_R和Python中的线性回归 - 在同一问题上的结果不同...
  4. 0基础怎么学python10010基础怎么学python_0基础学python全套python教程
  5. Alias Method解决随机类型概率问题(别名算法)
  6. 51Nod 1105 第K大的数 二分答案
  7. 解决Sublime Text3莫名的中文乱码问题
  8. 快乐学习 Ionic Framework+PhoneGap 手册1-3 {面板切换}
  9. 转载[POJ题型分类]
  10. MDK升级后的头文件冲突