浅谈HTML5中canvas中的beginPath()和closePath()

简介:在HTML5中有一个很重要的阶段就是canvas,canvas中提供了大量的API,能使开发人员利用canvas绘制许多需要的图形,在canvas的绘制中有一个方法叫做beginPath()方法和closePath()方法,接下来详细介绍一下这两个方法,以及他们之间的联系

1、beginPath

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#myCanvas{
				border: 3px solid black;
				display: block;
				margin: 0 auto;
			}
		</style>
	</head>
	<body>
		<canvas id="myCanvas" width="600" height="600"></canvas>
	</body>
	<script type="text/javascript">
		var canvas = document.getElementById("myCanvas");
		var context = canvas.getContext("2d");
		context.strokeStyle = "black";
		context.moveTo(0,0);
		context.lineTo(100,100);
		context.stroke();
		context.strokeStyle = "red";
		context.moveTo(0,20);
		context.lineTo(100,120);
		context.stroke();
	</script>
</html>

 

以上代码中按照平常的逻辑来说会产生两条线,1黑1红,但是结果并不是如此,结果是两条红线并且第一条红线比较粗,再看以下代码发现我们的逻辑并没有错误,但是为什么会产生这样的情况呢,原因在于:canvas利用画笔在绘制的时候,每次都是从beginPath()开始画的,如果在当前找不到beginPath(),就继续向上找,直到找到beginPath()为止,然后从beginPath()之后开始继续绘制。也就是说,第一条线我们画了两次,一次是黑色,另一次是黑色

 

1、不论你用moveTo()把画笔移动到哪里,只要不beginPath(),那你一直都是在画一条路径

2、fillRect与strokeRect,这种画出独立区域的函数,也不会打断当前的路径

说到beginPath()就不得不提到closePath()

3、两者之间有什么联系呢,答案是没有联系,closePath()只是闭合当前的路径,从起点到现在的这个点形成一个闭合的回路,但是,这并不意味着他之后的路径就是新路径了,不要企图通过closePath()来开始一条新的路径

4、开启一条全新路径的唯一方法就是使用beginPath()

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值