2012-05-14 61 views
2

我正在尝试创建一个类似于Android SDK的Finger Paint示例的应用程序。我试图对我的测试应用程序实施撤销/重做功能,并在此问题中使用了接受的答案:Android FingerPaint Undo/Redo implementationAndroid Paint PorterDuff.Mode.CLEAR不能正常工作

这个例子有工作,但有一个我注意到的奇怪的事情。如果我选择橡皮擦模式,例如在点击某个按钮时,默认实现就像橡皮擦一样,但使用onDraw()就像上面提到的问题没有这样做。而不是它像一个普通的笔刷和黑色笔画(取决于给定的颜色)。

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

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

所以我的问题is..any想法如何,我可以分开换新,并设置只对他们的影响和使用,因为它应该是明确的模式,老线?

感谢您的帮助!

回答

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

}