2012-02-13 45 views
1

我一直在搜索整個晚上以某種方式爲我的繪圖應用程序實現橡皮擦功能。最常見的答案是簡單地繪製背景顏色或圖像,但這種解決方案不適用於我的應用程序,因爲我實現了多個圖層(Gimp/Photoshop風格)。如何在Android中爲繪圖應用程序實現橡皮擦

用戶應該能夠用盡可能多的圖層中提供的畫筆工具繪製線條(我的drawingview的onDraw方法將layer0 ... layerX繪製在彼此之上)。然後,如果他們選擇橡皮擦工具,它應該導致他們追蹤的當前圖層的任何區域變得透明。

我似乎無法找到合適的內置類/函數,但我不確定如何自己編寫它。我試圖做類似

Paint paint = new Paint(); 
paint.setAlpha(0); 

,然後使用噴漆的對象進行繪製,但只繪製了一個「隱形」線。

我也嘗試使用

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); 

但只是似乎畫正常的和沒有效力。我可能錯誤地使用了它,但Android文檔沒有包含它所做的明確描述。我只是碰巧在一些關於修改位圖的例子中看到它。

我可以根據需要提供代碼,我只是不確定什麼會有助於解決我的問題。指向正確的方向將是最大的幫助,因爲我沒有在Google上取得成功。

回答

2

你可以找到橡皮擦功能的實現,創造新的畫布,畫筆功能和保存功能,此鏈接:

create android drawing interface

它有很好的教程使用使得在Android上繪圖應用程序運動事件。

+0

因爲之前的演示代碼不再可用,並且此鏈接是一個比另一個更好的教程是,我改變這是被接受的答案。 – Robert 2013-11-10 01:13:30

2

看到這個演示:FingerPaint.java

你會知道如何實現對塗料中的橡皮擦。

享受。 :)

+0

對不起,我離開你的答案站在沒有迴應這麼久,但我很氣餒,我有這麼多的麻煩,我的應用程序的這一部分。我現在已經解決了這個問題,並且從您指出的鏈接中抽取了我的解決方案。在你發佈之前,我已經看過它,但是不知道他們爲什麼工作,而我卻沒有。謝謝你讓我再次看。 – Robert 2012-02-24 01:15:28

+0

鏈接已損壞。 – Gunaseelan 2013-06-13 04:27:39

+0

@Gunaseelan我不知道爲什麼這個鏈接被破壞。您可以參考:http://docs.eoeandroid.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/FingerPaint.html – 2013-11-12 05:23:42