paint - 在 Android FingerPaint 演示中如何删除绘制的路径

标签 paint android

我一直在尝试更改 Android (v3.0 Honeycomb) API 演示 FingerPaint (API >= 11),以包含一个可删除最后绘制路径的有效删除选项。

API 演示中的删除效果不佳,在 v3.0 中会崩溃,在 v3.1 中会绘制一个黑框,而仅部分删除路径(已提出错误,不确定是否已在 v3 中解决) .2 [不适用于英国的 Xoom 设备])。

我的代码如下:

public void eraseLastPath() {
    if (!mPaths.isEmpty()) {
        mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
        mCanvas.drawPath(mPaths.pop(), mPaint);
        invalidate();
    }
}

这有点有效,但会在 Canvas 上留下绘制路径的轮廓。例如

这个: enter image description here

被删除后看起来像这样: enter image description here

我错过了什么?有没有更好的方法来删除路径?

非常感谢任何帮助。

谢谢

最佳答案

尝试打开 mPaint 抗锯齿功能。

编辑:

删除路径的正确方法是将所有笔划存储到 ArrayList 中,然后删除不需要的笔划并重新绘制所有内容。问题中使用的方法并不是真正删除路径,而更像是在其上绘制另一种颜色,但是抗锯齿的工作方式与第一种颜色的工作方式不同。

每个路径都需要是新类“笔划”中的成员对象,该类还存储了颜色、绘画、滤镜等。这样所有的绘制都可以恢复,并且可以无限撤销。

关于paint - 在 Android FingerPaint 演示中如何删除绘制的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7063868/

相关文章:

image - 以编程方式绘制速度计的照明部分

wpf - 类似 Paint 的 WPF 应用程序的 MVVM 模式?

android - 将图像(覆盖)放在另一图像(背景)的 x、y 上

android - 图像不适合摩托罗拉 Razr 4.7 屏幕

android - Cloudant 和安卓 : Prevent Repeated Polling For Changes In Database

Java 6/Swing : Paint on top of JScrollPane's ViewPort/ViewPort-component

java - java的绘图API?

android - Robolectric 和 Android SDK 29

java - 在java swing中重新绘制组件

java - 将文本设置为 switch 语句内的编辑文本时出错