お絵かきアプリでの消しゴム機能について

2,129 views
Skip to first unread message

太陽

unread,
May 20, 2012, 5:59:59 AM5/20/12
to 日本Androidの会
よろしくお願いします。

お絵かきアプリのようなものを作成しています。
一度書いたものを消す(透明色で上書く)消しゴムのような機能をつけたいのですが、うまくいきません。

以下のコードでペンを設定し、すでに書かれている情報を上書きたいと思ったのですが、
Paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR))

ペンが真っ黒になってしまいます。透明色になるのを期待したのですが・・。
なぜ黒くなるのでしょうか?原因がまったくわかりません。

ちなみに
ViewGroupに子ビューを2つ追加しています。
写真などの画像表示用のVIew(下)とペンで絵を書くようのView(上)です。

すみませんが、どなたか教えていただけないでしょうか。
よろしくお願いいたします。

Michiru Sasaki

unread,
May 20, 2012, 7:48:20 AM5/20/12
to android-g...@googlegroups.com
じげんです
なにか勘違いされていないでしょうか?
「上書き」するのは「透明色」では無く何かが書かれる以前の下地の色を指定するのでは無いでしょうか?
(そのためには下地部分を保存しておく必要があるように思います)

2012年5月20日 18:59 太陽 <situmon...@gmail.com>:

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。


太陽

unread,
May 20, 2012, 8:23:56 AM5/20/12
to 日本Androidの会
返信ありがとうございます。

一度CanvasにdrawしたものをBitmapに保存しないといけないということでしょうか?
逆に保存しないで透明色で上書くことはできないのでしょうか?


On 5月20日, 午後8:48, Michiru Sasaki <m.s.19...@gmail.com> wrote:
> じげんです
> なにか勘違いされていないでしょうか?
> 「上書き」するのは「透明色」では無く何かが書かれる以前の下地の色を指定するのでは無いでしょうか?
> (そのためには下地部分を保存しておく必要があるように思います)
>
> 2012年5月20日 18:59 太陽 <situmon.tai...@gmail.com>:

MORIHIRO

unread,
May 20, 2012, 8:32:55 AM5/20/12
to android-g...@googlegroups.com
View(上)のonDraw()でcanvasに対して、直接drawLine()等をする際に消しゴム処理が
うまく動作しない原因については不明ですが、、、

Bitmap.Config.ARGB_8888でcreateBitmap()したBitmap上でお絵描き処理をして、
onDraw()の際に、canvas.drawBitmap()する方法であれば正常動作すると思いますよ。


2012年5月20日日曜日 18時59分59秒 UTC+9 太陽:

太陽

unread,
May 20, 2012, 8:40:19 AM5/20/12
to 日本Androidの会
ありがとうございます。

消しゴム機能は解決できそうな気がします。
ですが、canvas.drawBitmap()で一度Bitmapにするとcanvas.drawPathを使用したときとくらべ、線が劣化(?)し
てしまいます。
劣化しないようにはできないでしょうか?
すみません。タイトルと少しずれた話になりますが、教えていただけないでしょうか。

よろしくお願いいたします。

MORIHIRO

unread,
May 20, 2012, 8:52:32 AM5/20/12
to android-g...@googlegroups.com
線の劣化については、Bitmapサイズが画面サイズに合っていないとかでなければ、
 Paint.setAntiAlias(true)
が抜けている、とかでしょうか。

あとは以下のApiDemosのコードなどを参考にしてみては如何でしょうか。
http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/FingerPaint.html


2012年5月20日日曜日 21時40分19秒 UTC+9 太陽:

太陽

unread,
May 20, 2012, 9:02:04 AM5/20/12
to 日本Androidの会
実はApiDemosを参考にしています。
それしか参考にできそうなのが見つかりませんでした。

Paint.setAntiAlias(true) は設定しています。
Bitmapサイズは意識していませんでした。設定してみます。
ありがとうございます。
Bitmapにすると劣化するというより
drawPathすると、線を書いているから逆に綺麗に見えるのかと思っていたのですが、考え方が間違っているのでしょうか?



On 5月20日, 午後9:52, MORIHIRO <morihiro.s...@gmail.com> wrote:
> 線の劣化については、Bitmapサイズが画面サイズに合っていないとかでなければ、
> Paint.setAntiAlias(true)
> が抜けている、とかでしょうか。
>
> あとは以下のApiDemosのコードなどを参考にしてみては如何でしょうか。http://developer.android.com/resources/samples/ApiDemos/src/com/examp...

Michiru Sasaki

unread,
May 20, 2012, 9:07:44 AM5/20/12
to android-g...@googlegroups.com
じげんです
すみません私の解釈の方が間違っていたようです。
かえって混乱させてしまったようで申し訳ありませんでした。

2012年5月20日 21:23 太陽 <situmon...@gmail.com>:

MORIHIRO

unread,
May 20, 2012, 9:10:27 AM5/20/12
to android-g...@googlegroups.com
イマイチ綺麗とか劣化とかの線引きがよく分かりませんので、
もう少し試行錯誤して現象を把握して頂いてから、
別案件として質問して頂いた方がいいように思います。


2012年5月20日日曜日 22時02分04秒 UTC+9 太陽:

太陽

unread,
May 20, 2012, 9:21:49 AM5/20/12
to 日本Androidの会
すみませんでした。

もう少し自分で頑張ってみます。
ありがとうございます。

>じげんさん
いえいえ、自分の質問が悪かったです。
ありがとうございました。

AdachiDaisuke

unread,
May 21, 2012, 3:16:26 AM5/21/12
to 日本Androidの会
安達と申します。

書籍「iPhone&Androidクロスプラットフォームアプリケーション開発」
がお絵描きアプリを題材にしています。

書籍:
http://www.amazon.co.jp/iPhone-Androidクロスプラットフォームアプリケーション開発~スマートフォン用グ
ラフィックスツール作成で学ぶ~-鈴木-晃/dp/4839934142/ref=dp_return_2?
ie=UTF8&n=465392&s=books

サンプルコード:
http://web.me.com/s.akira/iPhoneAndroidAppDev/index.html

Androidアプリ開発入門リンク集:
http://bestforce1.blogspot.com/p/android.html
Reply all
Reply to author
Forward
0 new messages