Есть ли способ клонировать элемент canvas при использовании excanvas? - PullRequest
1 голос
/ 05 ноября 2011

Я ищу способ клонирования элемента canvas. Основываясь на этот вопрос Я попробовал что-то вроде этого, который работал:

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 ]

1 голос
/ 05 ноября 2011

Тебе не повезло, прости.

Единственным другим способом будет использование `drawImage, поскольку вы можете рисовать один холст на другом, используя его.

Но эта конкретная функция drawImage не поддерживается, так как не существует "реального" холста для рисования, во-первых (просто набор VML, который притворяется похожим на холст). Здесь есть запрос на эту функцию:

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

Но крайне маловероятно, что он когда-либо попадет в сгустки. Excanvas не обновлялся с 20 марта 2010 года. Я настоятельно рекомендую вам перейти на полноценный SVG / VML вместо canvas или отказаться от поддержки IE8.

0 голосов
/ 29 мая 2015

Попробуйте сохранить содержимое excanv.getContext('2d').element_.innerHTML. Если вы используете его повторно, вы клонируете содержимое контекстных путей.

Пример кода:

var excanv = G_vmlCanvasManager.initElement (узел);

// создаем графики в контексте excanv .... и т. Д.

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

...