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

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

 

转载于:https://www.cnblogs.com/aniu-caili/p/9526994.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML Canvas 可以实现许多有趣的效果,包括水墨喷溅晕染的喷笔效果。实现这个效果可以使用随机的圆形、线条和渐变来模拟水墨的喷溅和晕染。以下是一个简单的示例代码,展示如何在 Canvas 上绘制水墨喷溅晕染的效果: ```html <!DOCTYPE html> <html> <head> <title>HTML5 Canvas 水墨效果</title> </head> <body> <canvas id="myCanvas" width="500" height="500"></canvas> <script> var canvas = document.getElementById('myCanvas'); var context = canvas.getContext('2d'); // 设置画布背景色为白色 context.fillStyle = '#fff'; context.fillRect(0, 0, canvas.width, canvas.height); // 随机生成圆形来模拟喷溅效果 for (var i = 0; i < 1000; i++) { var x = Math.random() * canvas.width; var y = Math.random() * canvas.height; var radius = Math.random() * 20 + 10; // 随机生成颜色渐变,模拟晕染效果 var gradient = context.createRadialGradient(x, y, 0, x, y, radius); gradient.addColorStop(0, 'rgba(0, 0, 0, 0.1)'); gradient.addColorStop(1, 'rgba(0, 0, 0, 0.8)'); context.beginPath(); context.arc(x, y, radius, 0, Math.PI * 2, false); context.fillStyle = gradient; context.fill(); context.closePath(); } </script> </body> </html> ``` 在这个示例,我们使用 `getContext()` 方法获取到 Canvas 的上下文对象,然后在 Canvas 上绘制随机生成的圆形和颜色渐变,模拟水墨喷溅晕染的效果。你可以根据自己的需要对代码进行修改和调整,来实现更加细致和真实的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值