t2lowと申します。
私もちゃんと理解してはいないのですが、
Paint.setXfermode()で色の重ね方を指定できるようです。
PorterDuff.Mode.DSTあたりを指定した PorterDuffXfermodeを
設定すれば、指定した色での描画ができるかと思います。
想定した塗り方でなければ、 PorterDuff.Modeを変えて
いろいろ試してみて下さい。
以上です。
昨夜、少しコードを書いて試してみました。
半透明の黒色#80000000でdrawLine()を2回呼んで線を交差させただけの簡単なコードです。
確かにnaoさんのおっしゃるように、半透明が重なって描画されると色が濃くなりました。
以前、この機能を使ってスクラッチカードを削るように、不透明を透明で上書きするということが実現できていたので、同じようにいけるかと思っていたのですが…。
どうも私の理解不足のようです。すみません。
現時点では私にはこれ以上わかりません…。
どなたかわかる方がいらっしゃいましたらご助力お願いいたします。
少し調べてコードを書いてみました。
> 同じ部分を塗りつぶしても色を透明のままにすることはできないでしょうか?
これはやはりできます。
Paint.setXfermode()を使うと良いと思います。
最初に私は「DST」を使うと良いと回答してしまいましたが、
これは間違いでStoneさんが言うように「SRC」を指定するのが正解かと思います。
「SRC」は転送元の色を使う指定となります。
いくら色を重ねても指定した色で描画されます。
ただ、下が透けて見えるという表現には使えませんので、
一部分は透けるけれど、重なる部分は濃くしたくないということであれば、
石畑さんの言うようにBitmapを別に作るのが良いかと思います。
私のブログに作成したコードを置きました。
2本の半透明の線が交差しているだけのサンプルですが、
「SRC」を選択すると交差した部分も濃くならないことが確認できると思います。
http://blog.tappli.com/article/47008867.html
参考になれば幸いです。
2011年7月27日10:36 ishihata <ishihat...@gmail.com>: