在画布上,drawImage与png vs之间的区别是使用笔画创建绘图?

时间:2011-12-22 07:03:47

标签: javascript canvas png html5-canvas

为什么在画布中处理事物之间存在差异?例如,如果我在画布上放一个png而在画布上画一条线。当我将该画布的内容复制到另一个画布时,只会复制该行。

var thecanvas = document.getElementById('mycanvas');
var context = thecanvas.getContext('2d');

// put a png on the canvas
var img = new Image();
img.onload = function(){ context.drawImage(img,0,0); };
img.src = 'images/test.png';        

// draw a line on the canvas
context.moveTo(100, 150); context.lineTo(450, 50); context.stroke();

final_image = thecanvas.toDataURL("image/png");
copyimg = new Image();
copyimg.src = final_image;          
var newcanvas = document.getElementById('newCanvas');
var newcanvascontext = newcanvas.getContext('2d');

// why is only the line I drew copied over and not the png image???
newcanvascontext.drawImage(copyimg,0,0,397,397);

1 个答案:

答案 0 :(得分:4)

请注意图片加载事件。在加载图像之前复制画布。你必须这样做

var thecanvas = document.getElementById('mycanvas');
var context = thecanvas.getContext('2d');

// put a png on the canvas
var img = new Image();
img.onload = function(){ 

        context.drawImage(img,0,0); 

        var newcanvas = document.getElementById('newCanvas');
        var newcanvascontext = newcanvas.getContext('2d');
        newcanvascontext.drawImage(thecanvas,0 ,0);

};
img.src = 'http://www.mygreatiphone.com/wp-content/uploads/2011/11/google.png';        

// draw a line on the canvas
context.moveTo(100, 150); context.lineTo(450, 50); context.stroke();

请参阅演示:http://jsfiddle.net/diode/3NHXy/5/

相关问题