Android 安卓画布-画一个洞

Android 安卓画布-画一个洞,android,canvas,paint,ondraw,Android,Canvas,Paint,Ondraw,是否有可能在Android中使用canvas实现以下图片 我想有一个洞,而不仅仅是在黄色的红色层上有一个圆圈。我在我的onDraw()-方法中尝试了以下代码(但失败): canvas.drawBitmap(yellow, 0, 0, paint); canvas.drawBitmap(red, 0, 200, paint); Paint p = new Paint(); p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));

是否有可能在Android中使用canvas实现以下图片

我想有一个洞,而不仅仅是在黄色的红色层上有一个圆圈。我在我的onDraw()-方法中尝试了以下代码(但失败):

canvas.drawBitmap(yellow, 0, 0, paint);
canvas.drawBitmap(red, 0, 200, paint);
Paint p = new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawCircle(300, 300, radius, p);
但当我使用这段代码时,它在两个位图中都钻了一个洞。最后,这个应用程序应该是一个有球、洞和其他东西的迷宫。当球掉进洞里时,它应该出现在红色位图下面。有可能实现这一点吗

回答:


如果有人应该有同样的问题:使用查看而不是SurfaceView。这是我的错,因为SurfaceView的背景无法设置为透明

我认为您误解了画布/位图的工作原理。没有存储层或对象(除非您存储它们)。它只是显示图像的逐像素表示。红色正方形上方的黄色圆圈就是上图中显示的


如果你真的想要一个红色图层,你必须合成两个位图。在一个位图中绘制红方块上的孔,在一个位图中绘制黄色层。在画布上,绘制黄色位图,然后在顶部绘制“带孔的红色正方形”位图。

找到解决方案了吗?是的,我找到了。通篇阅读;)如果有人感兴趣,本页底部有一个完整的工作示例: