4

canvas を使って Android で次の図を実現することはできますか?

穴のある絵

黄色の赤いレイヤーの上に円だけでなく、穴が欲しいです。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);

しかし、このコードを使用すると、両方のビットマップに穴が開いてしまいます。最後に、このアプリは、ボール、穴、その他のものを備えた迷路にする必要があります。ボールが穴に落ちると、赤いビットマップの下に表示されます。これを実現することは可能ですか?

答え:

誰かが同じ問題を抱えている場合: SurfaceView ではなくViewを使用してください。SurfaceView の bg を透明に設定できなかったため、それは私のせいでした。

4

1 に答える 1

2

キャンバス/ビットマップの仕組みを誤解していると思います。レイヤーやオブジェクトは保存されません (保存しない限り)。これは、表示される画像のピクセル単位の表現にすぎません。赤い四角の上にある黄色い円、上の図で示したものです。

本当に赤いレイヤーが必要な場合は、2 つのビットマップを合成する必要があります。1 つのビットマップで赤い四角の上に穴を描き、1 つのビットマップで黄色のレイヤーを描きます。キャンバスに黄色のビットマップを描画し、その上に「穴の開いた赤い四角形」のビットマップを描画します。

于 2013-04-05T19:19:45.147 に答える