2012-05-04 8 views
0

私は背景画像が最初に描画されたキャンバスを持っています。 次に、別のイメージが背景の上に描画されます。 私は、画面全体を移動するグラデーションオブジェクトを持っています。グラデーションで使用されるペイントのXfermodeは、 と設定されています。paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));アンドロイドキャンバスで選択的にマスキング

効果は機能しますが、背景イメージにも適用されます。上のマスクの影響を受ける背景イメージを避けるにはどうすればいいですか?

答えて

0

ペイントはキャンバス全体に適用されます。グラデーションオブジェクトと同じキャンバスを使用して背景を描画するので、もちろんカスタムXfermodeを使用すると、その背景に影響します!

可能な解決策の1つは、別々のBitmapオブジェクトによってバックアップされた2つのCanvasオブジェクトで背景と前景を分離し、Photoshopでのようにレイヤーをマージすることです。

https://stackoverflow.com/a/10370828/1350375

:私はちょうどこのStackOverflowの上でしばらく前に行い、サンプルコードを掲載、ここへのリンクです