2

我正在尝试从 Android SDK 创建一个类似于 Finger Paint 示例的应用程序。我试图在我的测试应用程序中实现撤消/重做功能,并在这个问题中使用了公认的答案: Android FingerPaint Undo/Redo implementation

那里的例子有效,但我注意到了一件奇怪的事情。例如,如果我在某些按钮单击时选择橡皮擦模式,则默认实现就像橡皮擦一样,但onDraw()在上述问题中使用并没有这样做。而不是像普通画笔一样使用黑色笔触进行绘制(取决于给定的颜色)。

如果我尝试向当前画笔添加另一种效果,例如我画了 15 条线,然后选择添加模糊选项,在我绘制新的之后,之前的所有线也会变得模糊。

            if (mPaint.getMaskFilter() != mBlur) {
                mPaint.setMaskFilter(mBlur);
            } else {
                mPaint.setMaskFilter(null);
            }
            return true;

所以我的问题是..任何想法如何将旧线与新线分开并仅为它们设置效果并使用应有的清晰模式?

感谢您提供任何帮助!

4

1 回答 1

0

您宁愿将历史记录保存在如下对象中,而不仅仅是保存路径对象。

class pathInfo {
    Path mPath;
    int  mStyle;
    boolean mbAntiAlias; 
    ....
}

然后在绘制每条路径时从这些对象中选择每个相应的信息

protected void onDraw(Canvas canvas) {            

    for (PathInfo p : pathsInfo){
        mPaint.setStyle(p.mStyle);
        ....
        canvas.drawPath(p.mPath, mPaint);
    }

}
于 2012-05-14T12:07:30.210 回答