保存/恢复HTML5 Canvas的背景区域

我正在使用HTML5 canvas如下:

>显示填充画布区域的图像.
>在图像上显示黑色文本标签.
>单击文本标签时,通过绘制填充的红色矩形白色文本突出显示它.

我有那部分一切正常.现在我想要做的是删除红色矩形并恢复原来在它后面的图像背景.我是画布的新手并且阅读了相当数量,但是我看不出怎么做.那说我相信它一定很简单.

解决方法

我认为有一些方法……

点击发布后重绘所有内容

这很简单但效率不高.

仅重绘已更改的部分

具有9个参数的drawImage仅重绘已更改的背景图像部分,然后重写黑色文本.

单击之前保存图像数据,然后将其还原

这使用2D上下文的getImageData和putImageData. (不确定它是否被广泛实施.)

这里的规格:

ImageData getImageData(in double sx,in double sy,in double sw,in double sh);
void putImageData(in ImageData imagedata,in double dx,in double dy,in optional double dirtyX,in double dirtyY,in double dirtyWidth,in double dirtyHeight);

因此,例如,如果更改的部分位于从(20,30)到(180,70)像素的矩形中,则只需执行以下操作:

var ctx = canvas.getContext("2d");
var saved_rect = ctx.getImageData(20,30,160,40);
// highlight the image part ...

// restore the altered part
ctx.putImageData(saved_rect,20,30);

使用两个叠加的画布

第二个画布位于第一个画布上,将保持红色矩形和白色文本,并在您想要“恢复”原始图像时清除.

相关文章

HTML5不是新事物。自从最初发布(2008年1月)以来,我们一直在使用它的一些功能。后来,我再次仔细查看...
Pointer Events API 是Hmtl5的事件规范之一,它主要目的是用来将鼠标(Mouse)、触摸(touch)和触控笔(...
CSS动画非常的有趣;这种技术的美就在于,通过使用很多简单的属性,你能创建出漂亮的消隐效果。其中代表...
clip-path介绍 clip-path 直译过来就是裁剪路径,使用SVG或形状定义一个HTML元素的可见区域的方法。想象...
语法 必需。动画时长的百分比。 合法的值: 0-100% from(与 0% 相同) to(与 100% 相同) 定义和用法...
基本代码 html代码: 首先定义一些基本的样式和动画: background-size: auto 100%; 这段代码的意思是让...