2013-04-05 90 views
4

用画布可以在Android中实现以下图片吗?Android画布 - 画一个洞

Picture with Hole

我想有一个洞,不仅在红层是黄色某个圈子。我在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的bg不能设置为透明。

+0

您是否找到解决方案? – Sebastian 2013-09-05 16:55:58

+0

是的,我找到了一个。阅读整篇文章;) – theyanu 2013-09-05 20:40:42

+0

如果有人感兴趣,本页底部有一个完整的工作示例:http://stackoverflow.com/questions/3467334/erase-bitmap-parts-using-porterduff-mode – adavea 2014-09-08 19:38:20

回答

2

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

如果您确实需要红色图层,则必须合成两个位图。在一个位图上的红色方块上绘制空洞,在一个位图中绘制黄色图层。在画布上,绘制黄色位图,然后绘制顶部的“有洞的红色方块”位图。