有没有办法在使用excanvas时克隆canvas元素?

时间:2011-11-04 20:16:58

标签: internet-explorer html5 canvas excanvas

我正在寻找克隆canvas元素的方法。基于this question,我尝试了类似的东西,它起作用了:

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时还有其他方法可以实现吗?

2 个答案:

答案 0 :(得分:1)

你运气不好,抱歉。

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

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

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

但它极不可能让它成为一个替代品。自2010年3月20日以来,Excanvas尚未更新。我强烈建议您考虑使用全面的SVG / VML而不是画布,或者放弃对IE8的支持。

答案 1 :(得分:0)

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

示例代码:

var excanv = G_vmlCanvasManager.initElement(node);

//使用excanv的上下文进行图形处理等。

var excanv2 = G_vmlCanvasManager.initElement(node2); excanv2.getContext(' 2D&#39)。element_.innerHTML = excanv.getContext(' 2D&#39)。element_.innerHTML;