2013-04-05 73 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

我認爲你誤解了畫布/位圖是如何工作的。沒有圖層或對象存儲(除非您存儲它們)。它只是一個像素逐像素表示的圖像顯示。紅色方塊上的黃色圓圈上圖中顯示的內容。

如果您確實需要紅色圖層,則必須合成兩個位圖。在一個位圖上的紅色方塊上繪製空洞,在一個位圖中繪製黃色圖層。在畫布上,繪製黃色位圖,然後繪製頂部的「有洞的紅色方塊」位圖。