2012-05-14 78 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); 
    } 

}