1

我正在寻找一种克隆画布元素的方法。基于这个问题,我尝试了这样的方法,它有效:

var canvasContext = $("#canvas1")[0].getContext("2d");
canvasImageData = canvasContext.getImageData(0, 0, canvasContext.canvas.width, canvasContext.canvas.height);
$("#canvas2")[0].getContext("2d").putImageData(canvasImageData, 0, 0);

但是,我还需要对 IE8 及以下版本的支持。我正在使用不支持图像数据方法的 excanvas。

使用 excanvas 时还有其他方法可以实现这一点吗?

4

2 回答 2

1

你运气不好,对不起。

唯一的另一种方法是使用`drawImage,因为您可以使用它将一个画布绘制到另一个画布上。

但是不支持 的特定功能,drawImage因为首先没有要绘制的“真实”画布(只是一堆假装看起来像画布的 VML)。这里有对该功能的请求:

http://code.google.com/p/explorercanvas/issues/detail?id=92

但它极不可能进入excanvas。Excanvas 自 2010 年 3 月 20 日以来一直没有更新。我强烈建议您考虑迁移到完整的 SVG/VML 而不是 canvas 或放弃对 IE8 的支持。

于 2011-11-05T05:21:26.043 回答
0

尝试保存内容excanv.getContext('2d').element_.innerHTML。如果您重用它,您将克隆上下文路径内容。

示例代码:

var excanv=G_vmlCanvasManager.initElement(node);

//用excanv的上下文做你的图形......等等。

var excanv2=G_vmlCanvasManager.initElement(node2); excanv2.getContext('2d').element_.innerHTML=excanv.getContext('2d').element_.innerHTML;

于 2015-05-29T20:09:26.217 回答