我正在寻找克隆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时还有其他方法可以实现吗?
答案 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;