如何在 Canvas 中清除图像上的矩形

How to clear rectangle on Image in Canvas

我需要在不损坏现有图像的情况下清除 Canvas 中图像上绘制的矩形。我可以绘制小矩形点并将其清除。但问题是,当我清除矩形时,它仍然是图像上的白色小块。

谁能告诉我如何在不损坏现有图像的情况下清除图像上的矩形。

我使用了以下方法来清除矩形但没有用。

1) context.fillStyle ="white";

2) context.clearRect(xCoordinate, yCoordinate, 10, 08);

提前致谢!

你可以做一件事。

在 canvas 上创建矩形时,只需获取如下图像数据:

var imgData = context.getImageData(xCoordinate, yCoordinate, 10, 8);

并绘制矩形。

清除矩形时,只需像这样放回图像数据:

context.putImageData(imgData, xCoordinate, yCoordinate);

Canvas 这样不行。它是单层,默认情况下也是透明的。因此,考虑到这一点,您可以通过简单地为 canvas 元素提供 CSS 背景来实现您想要的效果。这样,您在该背景上绘制的任何内容都可以轻松移除,并且背景会显示出来。

#backed-canvas{
    background-image: url(http://www.placebear.com/300/200);
}

JSFiddle 示例:https://jsfiddle.net/yLf5erut/

我建议逐个使用 2 canvas 个元素。 因此,您可以将原始图像绘制在底部 canvas 且 zIndex 较低的图像上,而顶部具有较高 zIndex 的图像可用于绘制/清除任何需要的图像。这是一种常见的做法,对于更复杂的动画,您最终会获得更好的性能。