Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中为绘图应用程序实现橡皮擦_Android_Paint - Fatal编程技术网

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

如何在Android中为绘图应用程序实现橡皮擦,android,paint,Android,Paint,我整个晚上都在寻找一些方法来为我的绘图应用程序实现橡皮擦功能。最常见的答案是简单地绘制背景色或图像,但此解决方案不适用于我的应用程序,因为我正在实现多层Gimp/Photoshop样式 用户应该能够使用画笔工具绘制一条线,画笔工具的层数应尽可能多,因为我的drawingview的onDraw方法将图层0…layerX绘制在彼此的顶部。然后,如果他们选择橡皮擦工具,它会导致他们跟踪的当前层的任何区域变为透明 我似乎找不到合适的内置类/函数,也不确定如何自己编写。我试着做一些类似的事情 Paint

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

用户应该能够使用画笔工具绘制一条线,画笔工具的层数应尽可能多,因为我的drawingview的onDraw方法将图层0…layerX绘制在彼此的顶部。然后,如果他们选择橡皮擦工具,它会导致他们跟踪的当前层的任何区域变为透明

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

Paint paint = new Paint();
paint.setAlpha(0);
然后使用该绘制对象进行绘制,但这只会绘制一条“不可见”的线

我还试图使用

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
但这似乎是正常的,没有效果。我可能没有正确地使用它,但是Android文档中没有明确描述它的功能。我只是碰巧在一些关于修改位图的示例中看到了它

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

请参阅此演示:

您将了解如何使用橡皮擦进行喷漆

享受

请参见此演示:

您将了解如何使用橡皮擦进行喷漆


享受

您可以在以下链接中找到橡皮擦功能、创建新画布、笔刷功能和保存功能的实现:


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

您可以在以下链接中找到橡皮擦功能、创建新画布、笔刷功能和保存功能的实现:


关于使用motion event在android上制作绘图应用程序,这是一个非常好的教程。

很抱歉,我让你的答案久久没有回应,但我很沮丧,我的应用程序的这一部分遇到了很多麻烦。我现在已经解决了这个问题,我确实从你指向的链接中得出了我的解决方案。实际上,在你发布它之前,我已经看过了,但我不明白为什么他们的有效,而我的无效。谢谢你让我再看一遍。@Gunaseelan我不知道为什么那个链接断了。你可以这样说:很抱歉,我让你的答案这么长时间没有回应,但我很沮丧,我的应用程序的这一部分遇到了很多麻烦。我现在已经解决了这个问题,我确实从你指向的链接中得出了我的解决方案。实际上,在你发布它之前,我已经看过了,但我不明白为什么他们的有效,而我的无效。谢谢你让我再看一遍。@Gunaseelan我不知道为什么那个链接断了。您可以参考:因为以前的演示代码不再可用,并且此链接比另一个更好,所以我将此更改为可接受的答案。因为以前的演示代码不再可用,并且此链接比另一个更好,所以我将此更改为可接受的答案。