是否可以在不清除整个画布的情况下使用javascript从画布上删除元素?
我想做的是在画布上画一个圆,然后在调用函数时删除前一个圆并画一个新的圆。这是否可能,而不必重新绘制整个画布 以下面的代码为例是否可以在不清除整个画布的情况下使用javascript从画布上删除元素?,javascript,html5-canvas,Javascript,Html5 Canvas,我想做的是在画布上画一个圆,然后在调用函数时删除前一个圆并画一个新的圆。这是否可能,而不必重新绘制整个画布 以下面的代码为例 var c = document.getElementById("myCanvas"); var ctx = c.getContext("2d"); ctx.beginPath(); ctx.arc(95, 50, 40, 0, 2 * Math.PI); ctx.stroke(); 画布是像素的集合(与图像完全相同,但它是从代码计算的,而不是从文件加载的) 移除旧圆并
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.beginPath();
ctx.arc(95, 50, 40, 0, 2 * Math.PI);
ctx.stroke();
画布是像素的集合(与图像完全相同,但它是从代码计算的,而不是从文件加载的) 移除旧圆并绘制新圆的唯一方法(如果您想要像素完美的结果)是将圆重新绘制在新位置 一个可能的解决方案是使用三个不同的
canvas
元素,一个一个地分层:
1和3可以保持固定,您只需要重新绘制第二个画布。画布是像素的集合(与图像完全相同,但它是从代码计算的,而不是从文件加载的) 移除旧圆并绘制新圆的唯一方法(如果您想要像素完美的结果)是将圆重新绘制在新位置 一个可能的解决方案是使用三个不同的
canvas
元素,一个一个地分层:
1和3可以保持固定,您只需要重画第二块画布。您必须清除上下文,然后重画除圆圈以外的所有内容。您必须清除上下文,然后重画除圆圈以外的所有内容。这将非常有效。但是,是否可以使顶部画布的背景透明?@ZaneSmit:默认情况下,画布是所有画布透明的。每个像素有4个字节:r、g、b和alpha。如果在画布上绘制对象,则从未绘制到的部分是透明的(alpha=0),这将非常有效。但是,是否可以使顶部画布的背景透明?@ZaneSmit:画布默认为全透明。每个像素有4个字节:r、g、b和alpha。如果在画布上绘制对象,则从未绘制到的零件将被视为槽(alpha=0)