Android 画布上的画布

Android 画布上的画布,android,canvas,Android,Canvas,我想画一些东西(对于exmaple a rect)到画布中,它移动的每个循环都会显示出来。我想画一个背景(例如背景是蓝色的),但我只想画一次背景。所以我想我会把背景画到一个画布上,然后把矩形画到另一个画布上,然后cnavas的背景会是透明的 可能吗 如何将第二个画布设置为透明,以便您可以看到矩形移动(而不是复制它本身,因为您可以看到前面的矩形)您应该将背景绘制到位图一次。然后在每次循环迭代时将该位图绘制到画布中 您可以使用z索引将两个画布堆叠在一起 <canvas id="backgrou

我想画一些东西(对于exmaple a rect)到画布中,它移动的每个循环都会显示出来。我想画一个背景(例如背景是蓝色的),但我只想画一次背景。所以我想我会把背景画到一个画布上,然后把矩形画到另一个画布上,然后cnavas的背景会是透明的

可能吗


如何将第二个画布设置为透明,以便您可以看到矩形移动(而不是复制它本身,因为您可以看到前面的矩形)

您应该将背景绘制到位图一次。然后在每次循环迭代时将该位图绘制到画布中

您可以使用z索引将两个画布堆叠在一起

<canvas id="background" style="position: absolute; top:0px; left:0px; z-index:-1"></canvas>
<canvas id="foreground" style="position: absolute; top:0px; left:0px; z-index:0"></canvas>

在前景的每次重新绘制开始时,不要使用fillRect,而是使用clearRect,这将使其透明。

不,只有一张画布。您可以添加一个示例,说明如何执行此操作?如果必须在画布之前设置位图的宽度和高度,我不知道如何将位图的宽度和高度设置为整个画布。查看位图。创建位图时,将其设置为与视图的宽度和高度相同的宽度和高度
var backgroundCanvas = document.getElementById("background");
var ctxBackgroundCanvas = backgroundCanvas.getContext("2d");

var foregroundCanvas = document.getElementById("foreground");
var ctxForegroundCanvas = foregroundCanvas .getContext("2d");

function paintBackground() {
//paint background here using ctxBackgroundCanvas
}

function paintForeground() {
//paint foreground here using ctxForegroundCanvas
}