填充 HTML 画布,排除任意(可能重叠)圆圈

发布于 2024-11-10 12:38:12 字数 385 浏览 0 评论 0原文

给定一个已经绘制的 HTML 画布,除了给定的圆形区域之外,对整个画布进行着色的最佳方法是什么? (在上下文中:阴影除了有光源的地方)

我希望它像 rect() 后面跟着后续的 arc() 一样简单,但据我所知有事后无法“删除”这些圆形部分。我可以接近(http://jsfiddle.net/mW8D3/2/),但是重叠圆的区域最终被阴影化(以异或方式,而我想要或)。使用clip()也有同样的问题。

我也尝试过使用 globalCompositeOperation 但似乎无法完全实现我想要的。

有什么想法吗?

Given an HTML canvas that has already been drawn to, what's the best way to shade the whole canvas except given circular regions? (in context: shadows except where are there light sources)

I was hoping it would be as simple as a rect() followed by subsequent arc()s, but AFAIK there's no way to "remove" those circular sections after the fact. I can get close ( http://jsfiddle.net/mW8D3/2/), but the overlapping regions of circles end up shaded (in XOR fashion, whereas I want OR). Using clip() has the same problem.

I've also tried using globalCompositeOperation but can't quite seem to achieve what I want.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦回梦里 2024-11-17 12:38:12

您可以首先在第二个画布上创建阴影图像,然后使用 globalCompositeOperation“copy”和透明 fillStyle 从中挖出孔。

像这样: http://jsfiddle.net/mW8D3/4/

You could first create the shadow image on a second canvas and knock out holes from it with globalCompositeOperation 'copy' and a transparent fillStyle.

Like this: http://jsfiddle.net/mW8D3/4/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文