有没有办法清除画布元素中的非矩形区域

Is there a way to clear a non-rectangular area in a canvas element?

本文关键字:区域 元素 清除 布元素 有没有      更新时间:2023-09-26

使用javascript,我在画布上绘制了几个多边形图像。

我希望根据用户事件/点击,能够清除画布的一部分(其中一个多边形图像(,这是一个不规则的形状,而不是一个矩形。

所以,我不能使用 clearRect(( 来实现我的目的。

谁能想到我能做到这一点的方法?

从本质上讲,我想让我的画布的一部分透明,但它不是矩形...... 一旦我定义了一个可以填充((和stroke((的区域,我不能也清除((它... 我知道这样的功能不可用。 人们在做什么来清除不规则形状的部分?

我对此有点陌生,所以如果这听起来像是一个愚蠢的问题,请提前道歉。

使用 ctx.clip() 将当前描边定义为剪切区域。

见 https://developer.mozilla.org/en/Canvas_tutorial/Compositing

我还在 http://jsfiddle.net/alnitak/6ABp7/创建了一个演示

剪切路径是图形状态的一部分,因此您可以.save()以前的状态、设置剪切、绘制更多内容,然后.restore()原始状态。