4

是否可以在Android中用canvas实现如下图?

带孔的图片

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

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);

但是当我使用这段代码时,它会在两个位图上打一个洞。最后,这个应用程序应该是一个有球、洞和其他东西的迷宫。当球掉进洞里时,它应该出现在红色位图下。是否有可能实现这一点?

回答:

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

4

1 回答 1

2

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

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

于 2013-04-05T19:19:45.147 回答