如何使用一个canvas元素作为另一个canvas元素的背景?

时间:2010-10-21 00:42:01

标签: html5 canvas

我正在浏览以下网站上的HTML5画布教程: Mozilla Developers。 在本教程中,他们说您可以使用canvas元素作为另一个canvas元素的背景。我试着用以下的html页面做到这一点。不幸的是,chrome中的调试器说无法加载资源。我是否在函数draw2()中引用源画布对象的正确方法?:

<html>
<head>
<title>CANVAS TESTING</title>
<script type="text/javascript">

function draw()
    {
    var ctx = document.getElementById('tutorial').getContext('2d');

    ctx.translate(0,document.getElementById('tutorial').height); 
    ctx.scale(1,-1)

    // Create gradients
    var lingrad = ctx.createLinearGradient(0,0,0,150);
    lingrad.addColorStop(0, '#fff');
    lingrad.addColorStop(0.5, '#66CC00');
    lingrad.addColorStop(0.5, '#fff');
    lingrad.addColorStop(1, '#00ABEB');

    var lingrad2 = ctx.createLinearGradient(0,50,0,95);
    lingrad2.addColorStop(0.25, 'rgba(0,0,0,0)');
    lingrad2.addColorStop(0.75, '#000');

    // assign gradients to fill and stroke styles
    ctx.fillStyle = lingrad;
    ctx.strokeStyle = lingrad2;

    // draw shapes
    ctx.fillRect(10,10,130,130);
    ctx.strokeRect(50,50,50,50);

    }
function draw2()
    {
    ctx=document.getElementById('canvas').getContext('2d');
    img = new Image();
    img.onload = function()
        {
        ctx.drawImage(img,0,0);
        }
    img.src = document.getElementById('tutorial');  
    }
</script>
</head>
<body onload="draw()">
<p>This is a test of canvas element.</p>
<canvas id="tutorial" width="400" height="400" style="background-color: black"></canvas>
<br /><br />
<canvas id="canvas" width="400" height="400" style="background-color: black"></canvas>
<p>
<input type="button" onclick="draw2()" value="Draw!" />
</p>
</body>

2 个答案:

答案 0 :(得分:3)

你的解决方案是正确的,但你使它变得比以前更加复杂。

所有你需要做的就是这个,没有任何爱好者:

var tut = document.getElementById('tutorial');
ctx.drawImage(tut,0,0); // just put in the canvas you want to draw!

Here's a live jsfiddle example如果您需要更多详细信息

答案 1 :(得分:1)

好的,我刚刚找到了问题的答案。

在Draw2()中关闭函数,我需要将img.src设置为以下内容:

img.src = document.getElementById('tutorial').toDataURL();

这样做会返回canvas元素的png图像的base64编码数据字符串。