半透明の色を重ねて描画すると、その部分の色が濃くなってしまうが、半透明のままにできないか、というものでした。
https://groups.google.com/group/android-group-japan/browse_thread/thread/b1b9a1298830f6d7?hl=ja#
以前、スクラッチゲーム風にタッチした部分が削れるような動作を実現するのに、Paint.setXfermode()を使って、「透明」を描画したのを思い出したので、回答をしたのですがそれではうまく行かなかったようです。
実際に自分の回答通りにコードを書いてみましたが、全然ダメでした。
人に教えるときは、もっとちゃんと理解していなきゃダメだな、と少し反省した次第です。
ただ、自分の回答は間違っていたものの、考え方まで間違っていたとは思えなかったので少し調べてみました。
自分の最初の回答では「DST」を指定すると言ったのですが、これは転送先の画像を使う指定ですね…。
逆でした…。「SRC」が転送元の画象を使う指定でした。
モードはこれで合っているはずです。
続いて「背景色と合成されて、ホントは上手くいってるんだけど、失敗しているように見えているんでは?」と思って、背景色と画像を分けてみることにしました。
背景色を真っ白にして、その上に目当ての画像だけを描くようにしてみました。
まぁ、正直に言って、最初のうちは実際に「ダメ」だったわけですけども、いろいろと調整していたらうまくいくようになりました。
やっぱり、自分の考え方は(そんなに)間違ってなかったー!
理解が曖昧なとこだったので良い機会でした。
簡単な動作確認用サンプルを置いておきますので、よろしければどうぞ。
XfermodeSample.zip
[参考]
Merlinの魔術: Porter-Duffのルール!
http://www.ibm.com/developerworks/jp/java/library/j-mer0918/
タグ:android