2012-02-13 78 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