Android画布 – 画一个洞

是否有可能在
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);

但是当我使用这个代码时,它会通过两个位图产生漏洞.最后,这个应用程序应该是一个带有球,洞和其他东西的迷宫.当球落入一个洞时,它应该出现在红色位图下面.有可能意识到这一点吗?

回答:

如果有人应该遇到同样的问题:使用View而不是SurfaceView.这是我的错,因为SurfaceView的bg无法设置透明.

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

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

点赞