尝试清除程序的画布

Posted

技术标签:

【中文标题】尝试清除程序的画布【英文标题】:Trying to Clear canvas for a Program 【发布时间】:2019-03-31 15:32:09 【问题描述】:

我正在使用 ObjectDraw 库,我有两种方法可以打印两种不同的模式。我正在使用onMouseClick(Location point) 方法在用户第一次单击画布时打印第一个图案,然后我想在第二次单击时打印第二个图案之前用canvas.clear(); 清除画布(依此类推)。

我很难找到一种方法来避免在该方法中同时发生所有事情。我尝试使用布尔变量,但我计划创建更多模式方法,所以我不确定该策略。有什么帮助吗?

这是我的onMouseClick(Location point) 方法在程序中的样子:

public void onMouseClick(Location point) 
           pattenrOne();
           canvas.clear();
           patternTwo();
    

【问题讨论】:

程序具有不同的状态,具体取决于显示的模式。要记住当前状态,变量是最好的选择。对于多种模式方法,您可以使用 int 变量而不是 boolean 或变量数组,具体取决于特定用例。 【参考方案1】:

我会将所有模式存储在数组或列表中,并使用int 变量来跟踪点击次数,从而跟踪要绘制的模式。然后,不要使用多种方法来绘制图案(patternOnepatternTwo 等),而是创建一个 drawPattern 方法:

public void drawPattern(int index) 
    arrayWithPatterns[index].draw();

在您的 Pattern 类中,定义一个 draw() 方法,其中的代码用于绘制该特定模式。

【讨论】:

以上是关于尝试清除程序的画布的主要内容,如果未能解决你的问题,请参考以下文章

如何清除画布以进行重绘

为剪辑区域设置动画时清除画布时出现问题

如何清除画布html5? [复制]

清除画布矩形(但保留背景)

Android 4+ html5画布不重绘

Canvas清除画布的3种方法