我的编程空间,编程开发者的网络收藏夹
学习永远不晚

HTML5 canvas中beginPath()和closePath()的重要性分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

HTML5 canvas中beginPath()和closePath()的重要性分析

这篇文章主要介绍HTML5 canvas中beginPath()和closePath()的重要性分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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,则得到两个不同颜色的矩形。

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

补充:canvas的Beginpath和Closepath理解

beginPath()方法

  var ctx = document. getElementById ( 'cvs' ) . getContext ( '2d' ) ;    ctx. beginPath ( ) ;    ctx. moveTo ( 100.5 , 20.5 ) ;    ctx. lineTo ( 200.5 , 20.5 ) ;    ctx. stroke ( ) ;    ctx. moveTo ( 100.5 , 40.5 ) ;    ctx. lineTo ( 200.5 , 40.5 )    ctx. strokeStyle = '#f00' ;    ctx. stroke ( ) ;

其中的0.5是为了避免线条模糊问题。那么上面的代码会得到什么样的图形呢?是不是一条黑线一条红线呢?

从代码上看,我们的逻辑毫无问题,但结果是我们得到的是两条红线,并不是一黑一红。

如果你明白这是为什么,那后面的你就不用看了。这就是beginPath的重要性。

canvas中的绘制方法(如stroke,fill),都会以“上一次beginPath”之后的所有路径为基础进行绘制。比如上面的代码里面我stroke了两次,其实这两次都是以第一次beginPath后的所有路径为基础画的。也就是说第一条路径我们stroke了两下,第一下是黑的,第二下是红的,所以最终也是红的。

不管你用moveTo把画笔移动到哪里,只要不beginPath,那你一直都是在画一条路径。
2.fillRect与strokeRect这种直接画出独立区域的函数,也 不 会打断当前的path.

如果你画出的图形和你想像的不一样,记得查看是否有合理的beginPath.

————————————–

说到 beginPath ,就不得不提到 closePath ,两者是不是有很“紧”的联系呢?答案是 几乎没有关系 。

closePath的意思不是结束路径,而是 关闭 路径,它会试图从当前路径的终点连一条路径到起点,让整个路径闭合起来。但是,这并不意味着它之后的路径就是新路径了!

我们在上面的代码的第一个lineTo后面加上closePath,可以发现还是得到了两条红线。

但如果我们在第一个stroke后面加上beginPath,则会如愿得到一条黑线一条红线。
 

ctx. stroke ( ) ;    ctx. beginPath ( ) ; //注意啦!    ctx. moveTo ( 100.5 , 40.5 ) ;    ctx. lineTo ( 200.5 , 40.5 )    ctx. strokeStyle = '#f00' ;   ctx. stroke ( ) ;

以上是“HTML5 canvas中beginPath()和closePath()的重要性分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

HTML5 canvas中beginPath()和closePath()的重要性分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

HTML5 canvas中beginPath()和closePath()的重要性分析

这篇文章主要介绍HTML5 canvas中beginPath()和closePath()的重要性分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!beginPath的作用很简单,就是开始一段新的路径,但在使用canv
2023-06-09

浅析 C++ 对游戏调试和分析的重要性

c++++ 作为游戏调试和分析的理想语言,提供了一系列强大工具和功能,包括断点、单步执行、性能分析器和内存分析器。这些工具使开发者能够有效调试、优化游戏应用程序,获得对底层硬件和平台的直接访问,并受益于一个充满活力的社区支持。C++ 在游戏
浅析 C++ 对游戏调试和分析的重要性
2024-05-23

html5中增加的重要新特性和内容有哪些

本篇内容主要讲解“html5中增加的重要新特性和内容有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5中增加的重要新特性和内容有哪些”吧!其实说白了 html5 也就是人为定义的一些
2023-06-27

HTML5中新增标签和属性的示例分析

这篇文章主要介绍HTML5中新增标签和属性的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!收集总结的HTML5的新特性,基本除了IE9以下都可以使用。HTML5语法大部分延续了html的语法不同之处:开头的
2023-06-09

聚合函数在数据分析中的重要性

在数据分析中,聚合函数是非常重要的工具,它们用于对数据进行计算和汇总,从而帮助分析师和决策者更好地理解数据背后的趋势和关系。一些常见的聚合函数包括求和、平均值、最大值、最小值和计数等。通过使用聚合函数,分析师可以更快速地获取数据的关键统计
聚合函数在数据分析中的重要性
2024-08-03

rowcount函数在数据操作中的意义与重要性分析

解析rowcount函数在数据操作中的重要性在进行数据库操作时,rowcount函数是一个非常重要的函数之一。它用于返回最近一次执行的SQL语句所影响的行数。无论是插入、更新还是删除数据,rowcount函数可以提供关键的信息,帮助我们确认
rowcount函数在数据操作中的意义与重要性分析
2023-12-29

如何用XGBoost在Python 中进行特征重要性分析和特征选择

如何用XGBoost在Python 中进行特征重要性分析和特征选择,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。使用诸如梯度增强之类的决策树方法的集成的好处是,
2023-06-15

PHP 中的防抖和防重复提交的安全性分析

引言:随着网站和应用程序的发展,Web 表单成为了与用户交互的重要方式之一。用户填写表单后点击提交按钮,服务器会接收并处理提交的数据。然而,由于网络延迟或用户误操作等原因,可能会导致表单的多次提交。重复提交不仅会增加服务器的负载,还可能引发
2023-10-21

快速转型: 从MySQL到DB2的技术变革的重要性和优势分析。

快速转型:从MySQL到DB2的技术变革的重要性和优势分析在当今互联网时代,数据是企业最宝贵的资产之一。随着企业的发展壮大,数据库的选择变得尤为重要。MySQL和DB2作为两个主流的关系型数据库管理系统(RDBMS)之一,都具有各自的特点和
2023-10-22

PHP接口性能优化之代码测试与性能分析(PHP接口中代码测试与性能分析的重要性)

PHP接口性能优化需要注重代码测试和性能分析。代码测试可以检测错误、提高代码覆盖率和增强信心。性能分析可以识别慢速请求、资源密集型操作和优化数据库查询。策略包括单元测试、集成测试、性能分析工具、请求跟踪和性能基准。最佳实践包括缓存、优化网络请求、最小化数据库查询和定期维护。通过代码测试和性能分析的持续努力,开发人员可以优化PHP接口性能,提供卓越的用户体验。
PHP接口性能优化之代码测试与性能分析(PHP接口中代码测试与性能分析的重要性)
2024-04-02

4xx状态码在HTTP协议中的重要性和影响的深度解析

深入理解HTTP协议中4xx状态码的重要性和影响,需要具体代码示例随着互联网的不断发展,HTTP协议作为应用层协议,扮演着重要的角色。在HTTP通信中,服务器通过状态码来向客户端传递请求处理的结果。在这些状态码中,4xx状态码通常表示客户端
4xx状态码在HTTP协议中的重要性和影响的深度解析
2023-12-26

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录