4

我正在使用所有可能的方法来清除画布,但没有运气。当我在画布上单击返回时,所有以前的图纸都会重新出现。

这是代码。

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();

};
4

3 回答 3

2

在我看来,您正在使用数组来存储绘图信息。我看到您已尝试清除它们,但据我所知,最好的清除方法是将长度设置为零。试试这个:

function clearCanvas() {
clickX.length = 0;
clickY.length = 0;
clickDrag.length = 0;
context.clearRect(0, 0, canvas.width, canvas.height);
};
于 2012-10-05T00:03:54.410 回答
1

如果它没有清除(并且您没有错误),那么要么

  1. clearCanvas()未输入您的方法,或
  2. clearCanvas()通话后,您正在画布上重绘。

抱歉,这是我得到的可用信息中最好的:P

于 2012-10-05T02:18:21.393 回答
1

你说“只要我点击画布”。这是否意味着在您单击之前,画布最初会被清除?然后这对我说,您有一个事件处理程序,它正在重绘所有内容。

此外,验证您的上下文是否仍指向正确的画布。一些画布变通方法需要创建一个临时画布。如果您这样做了,那么您可能正在清除错误的上下文。否则我看不出为什么 context.clearRect 不能像你所拥有的那样工作。

于 2012-10-05T07:32:46.640 回答