【问题标题】:How to implement an eraser for a drawing app in Android如何在 Android 中为绘图应用程序实现橡皮擦
【发布时间】:2021-12-13 03:32:23
【问题描述】:

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

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

我似乎找不到合适的内置类/函数,并且不确定如何自己编写它。我试图做类似的事情

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

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

我也尝试过使用

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

但这似乎只是正常绘制并且没有效果。我可能使用不正确,但 Android 文档没有包含对其作用的明确描述。我只是碰巧在一些关于修改位图的示例中看到它。

我可以根据需要提供代码,但我不确定什么有助于解决我的问题。指出正确的方向将是最大的帮助,因为我没有在 Google 上取得成功。

【问题讨论】:

    标签: android paint


    【解决方案1】:

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

    create android drawing interface

    它有一个非常好的教程,用于在 android 上使用动作事件制作绘图应用程序。

    【讨论】:

    • 因为之前的演示代码不再可用,而且这个链接是一个比另一个更好的教程,所以我将其更改为接受的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多