首页 > 作文

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

更新时间:2023-04-03 08:41:23 阅读: 评论:0

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

先来看一小段代码:

var ctx=document.getelementbyid("can电影 饮食男女vas").getcontext("2d");    ctx.beginpath();    ctx.rect(150,1is是什么50,100,100);    ctx.fillstyle="green";    ctx.fill();    ctx.rect(0,0,100,100);    ct南昌中学排名x.fillstyle="yellow";    ctx.fill();

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

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

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

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

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

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

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

补充:canvas的beginpath和clopath理解

beginpath()方法

  var ctx = document. getelementbyid ( 'cvs' ) . getcontext ( '2d' ) ;    ctx. beginpath ( ) ;    ctx. moveto ( 100.5 , 20.5 ) ;    ctx. lin工伤认定申请表eto ( 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了两下,第一下是黑的,第二下是红的,所以最终也是红的。

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

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

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

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

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

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

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

ctx. stroke ( ) ;    ctx. beginpath ( ) ; //注意啦!    ctx. moveto ( 100.5 , 40.5 ) ;    ctx. lineto ( 200.5 , 40.5 )    ctx. strokestyle = '#f00' ;   ctx. stroke ( ) ;  

总而言之,就是 不要企图通过闭合现有路径来开始一条新路径 ,而开始一条新路径,以前的路径也不会闭合。

本文发布于:2023-04-03 08:41:22,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/656a63827a7731571eb362b599074092.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:HTML5中canvas中的beginPath()和closePath()的重要性.doc

本文 PDF 下载地址:HTML5中canvas中的beginPath()和closePath()的重要性.pdf

标签:路径   代码   第一个   矩形
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图