HTML5画布未清除
我正在用各种可能的方法清理画布,但运气不好。当我在画布上单击“上一步”时,所有以前的图形都会重新出现 这是代码HTML5画布未清除,html,canvas,Html,Canvas,我正在用各种可能的方法清理画布,但运气不好。当我在画布上单击“上一步”时,所有以前的图形都会重新出现 这是代码 function clearCanvas() { //clickX = []; //clickY = []; //clickDrag = []; //context.clearRect(0, 0, canvas.width, canvas.height); //curColor = colorBlack; //redraw();
function clearCanvas() {
//clickX = [];
//clickY = [];
//clickDrag = [];
//context.clearRect(0, 0, canvas.width, canvas.height);
//curColor = colorBlack;
//redraw();
//clickX = new Array();
//clickY = new Array();
//clickDrag = new Array();
context.fillStyle = '#faebd7';
context.fillRect(0, 0, canvas.width, canvas.height);
canvas.width = canvas.width;
//context.beginPath();
};
在我看来,您正在使用数组存储图形信息。 我知道您已经尝试过清除它们,但是,据我所知,最好的清除方法是将长度设置为零。试试这个:
function clearCanvas() {
clickX.length = 0;
clickY.length = 0;
clickDrag.length = 0;
context.clearRect(0, 0, canvas.width, canvas.height);
};
如果没有清除(并且您没有错误),那么
clearCanvas()
方法,或者clearCanvas()
后,您将在画布上重新绘制一些画布解决方案需要创建临时画布。如果你已经这样做了,那么也许你正在清除错误的上下文。否则,我看不出context.clearRect为什么不能像您现在这样工作。试试
context.clearRect(0,0,canvas.width,canvas.height)
?这到底是如何调用的?我试过了,这就是为什么我在代码中包含了所有可能的组合。请参阅注释掉的代码。代码是从一个按钮调用来清除画布的。我不认为这仅仅是因为你发布的代码。这些方法确实有效,你找到解决办法了吗??如果你愿意,请分享,我也面临同样的问题。谢谢。它会清除画布,但当我选择一种不同的颜色来绘制时,直到我绘制一段时间后,它才会选择新的颜色。非常奇怪的行为。下面是我选择颜色的代码:函数setColorWhite(){curColor=colorWhite;redraw();};如何存储颜色信息?或者改变颜色是否会改变屏幕上所有线条的颜色?”因为信息有限,我所能想象的是,如果你在一个数组中有你的颜色,而这个数组没有在clearcanvas函数中被清除,它会画,比如说,100点作为以前的颜色,当它用完点时,它会切换到你的新颜色。在我的Javascript函数中,我只是将它声明为colorBlack=“#000000”,clickColor=new Array(),…我是否也应该重置clickColor?是的,请查看您的redraw()函数,它用于在画布上绘制的所有数组都必须重置,否则在添加新信息之前,它将遍历所有具有旧信息的数组。