【发布时间】: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 上取得成功。
【问题讨论】: