返回顶部
首页 > 资讯 > 精选 >HTML5 canvas中beginPath()和closePath()的重要性分析
  • 952
分享到

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

2023-06-09 22:06:22 952人浏览 八月长安
摘要

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

这篇文章主要介绍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()的重要性分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: HTML5 canvas中beginPath()和closePath()的重要性分析

本文链接: https://lsjlt.com/news/257910.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • HTML5 canvas中beginPath()和closePath()的重要性分析
    这篇文章主要介绍HTML5 canvas中beginPath()和closePath()的重要性分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!beginPath的作用很简单,就是开始一段新的路径,但在使用canv...
    99+
    2023-06-09
  • HTML5新特性与Canvas常用属性的示例分析
    这篇文章主要介绍HTML5新特性与Canvas常用属性的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 1.HTML5的内容类型 内容类型 描述 内嵌 向文档中添加其他...
    99+
    2024-04-02
  • CSS中继承性,特殊性,层叠性和重要性的示例分析
    这篇文章主要介绍CSS中继承性,特殊性,层叠性和重要性的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 继承性CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种...
    99+
    2024-04-02
  • HTML5中Canvas画线技巧的示例分析
    这篇文章主要为大家展示了“HTML5中Canvas画线技巧的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML5中Canvas画线技巧的示例分析”这...
    99+
    2024-04-02
  • HTML5中Canvas图像模糊的示例分析
    这篇文章给大家分享的是有关HTML5中Canvas图像模糊的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最近在用h6的canvas画动画,发现图像特别模糊。后来终于找到罪魁祸首是<meta nam...
    99+
    2023-06-09
  • 浅析 C++ 对游戏调试和分析的重要性
    c++++ 作为游戏调试和分析的理想语言,提供了一系列强大工具和功能,包括断点、单步执行、性能分析器和内存分析器。这些工具使开发者能够有效调试、优化游戏应用程序,获得对底层硬件和平台的直...
    99+
    2024-05-23
    游戏调试 游戏分析 c++
  • html5中canvas微信海报分享的示例分析
    小编给大家分享一下html5中canvas微信海报分享的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!随机产生一张图片拿到微信用户的头像和称呢(自己调后端...
    99+
    2023-06-09
  • canvas中globalCompositeOperation属性的示例分析
    这篇文章给大家分享的是有关canvas中globalCompositeOperation属性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。说明最早知道 canvas 的 globalCompositeO...
    99+
    2023-06-14
  • html5中增加的重要新特性和内容有哪些
    本篇内容主要讲解“html5中增加的重要新特性和内容有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5中增加的重要新特性和内容有哪些”吧!其实说白了 html5 也就是人为定义的一些...
    99+
    2023-06-27
  • 如何分析skip-slave-start的重要性
    如何分析skip-slave-start的重要性,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 一次问题解决过程...
    99+
    2024-04-02
  • 如何分析SAP CRM settype的重要性
    如何分析SAP CRM settype的重要性,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。产品集类型在CRM WebClient UI体系结构中扮演着非常重要的角色。(1...
    99+
    2023-06-04
  • 专业保险分析师的重要性
    转一篇文章,太保的达人写的。近年来,我国保险业持续快速发展,保险市场和保险公司的规模也在迅速地膨胀,在管理上对信息技术的依赖性日益显现。随着保险业的对外开放和市场竞争的加剧,成本竞争的压力也越来越大,通过信息化促进业务管理精细化、资源利用高...
    99+
    2023-06-03
  • 聚合函数在数据分析中的重要性
    在数据分析中,聚合函数是非常重要的工具,它们用于对数据进行计算和汇总,从而帮助分析师和决策者更好地理解数据背后的趋势和关系。一些常见的聚合函数包括求和、平均值、最大值、最小值和计数等。 通过使用聚合函数,分析师可以更快速地获取数据的关键统计...
    99+
    2024-08-03
    sql server
  • HTML5中新增标签和属性的示例分析
    这篇文章主要介绍HTML5中新增标签和属性的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!收集总结的HTML5的新特性,基本除了IE9以下都可以使用。HTML5语法大部分延续了html的语法不同之处:开头的 ...
    99+
    2023-06-09
  • 分析HTML5中download属性的应用
    本篇内容介绍了“分析HTML5中download属性的应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!&...
    99+
    2024-04-02
  • 网站测试重要性的示例分析
    这篇文章将为大家详细讲解有关网站测试重要性的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。网站不稳定的情况我们在浏览网站时,在浏览的过程中,有时会出现错误代码提示,或许是连接不上,或者是找不到所要...
    99+
    2023-06-10
  • HTML5中Canvas如何实现商场监控的示例分析
    这篇文章主要介绍了HTML5中Canvas如何实现商场监控的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。伴随国内经济的高速发展,人们对安全的要求越来越高。为了防止下...
    99+
    2023-06-09
  • PHP中封装性的重要性和优势
    封装是面向对象编程中的一项重要概念,它能够帮助我们更好地组织和管理代码,提高代码的可读性和可维护性。在PHP中,封装性是一种实现数据隐藏和方法访问限制的机制,它赋予了类对其属性和方法的控制权,让我们能够更加灵活地使用和扩展代码。数据隐藏与访...
    99+
    2023-10-21
    封装
  • CSS3动画和HTML5新特性的示例分析
    本文将为大家详细介绍“CSS3动画和HTML5新特性的示例分析”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“CSS3动画和HTML5新特性的示例分析”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体...
    99+
    2023-06-08
  • html5中drag和drop的示例分析
    小编给大家分享一下html5中drag和drop的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!定义和用法在拖放的过程中...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作