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

前端之家收集整理的这篇文章主要介绍了保存/恢复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相关文章