如何在Android中为绘图应用程序实现橡皮擦

时间:2012-02-13 01:27:15

标签: android paint

我整晚都在寻找某种方法来为我的绘图应用程序实现橡皮擦功能。最常见的答案是简单地绘制背景颜色或图像,但此解决方案不适用于我的应用程序,因为我正在实现多个图层(Gimp / Photoshop样式)。

用户应该能够使用在他们喜欢的多个层中提供的画笔工具绘制一条线(我的绘图视图的onDraw方法将layer0 ... layerX绘制在彼此的顶部)。然后,如果他们选择橡皮擦工具,它应该导致他们追踪的当前图层的任何区域变得透明。

我似乎无法找到内置的合适的类/函数,我不确定如何自己编写它。我试着做一些像

这样的事情
Paint paint = new Paint();
paint.setAlpha(0);

然后使用Paint对象绘制,但只绘制一条“不可见”的线。

我也尝试使用

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

但这似乎是正常的,没有效果。我可能错误地使用它,但Android文档没有明确说明它的作用。我碰巧在一些关于修改位图的例子中看到了它。

我可以根据需要提供代码,我只是不确定什么对解决我的问题有帮助。指向正确的方向将是最大的帮助,因为我没有成功与谷歌。

2 个答案:

答案 0 :(得分:2)

请参阅此演示:FingerPaint.java

您将了解如何为Paint实现橡皮擦。

享受。 :)

答案 1 :(得分:2)

你可以在这个链接上找到橡皮擦功能的实现,创建新的画布,刷子功能和保存功能:

create android drawing interface

它有非常好的教程,可以使用动作事件在Android上制作绘图应用程序。