SurfaceView Canvasを初期化

1,316 views
Skip to first unread message

太陽

unread,
Apr 25, 2012, 9:44:17 AM4/25/12
to 日本Androidの会
お絵かきアプリのようなものを作っています。

SurfaceViewクラスのインナークラスとしてHandlerを作成しました。

そのなかで
SurfaceViewクラス.getHolder().lockCanvas();でCanvasのインスタンスを取得。
canvas.drawPath(Path, Paint);を常時実行しており、
onTouchEventイベントでタップ情報をPathに追加し、即実行される仕組みです。

入力した情報をすべて消去するボタンを配置し、それを実行した際にCanvasを初期化したいのですが、方法がわかりません。

以下の方法を試しましたが、うまくいきませんでした。
1.Pathをnew
2.CanvasにBitmapをセットし、それを初期化
3.Canvasをnew

詳しい方、教えてください。
よろしくお願いいたします。

Hirokazu Fukami

unread,
Apr 25, 2012, 10:01:42 AM4/25/12
to android-g...@googlegroups.com
こんばんはfkmです。

canvas.drawColor(int)で一旦塗りつぶしちゃうのはどうでしょうか?

2012/4/25 太陽 <situmon...@gmail.com>:

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

--
-------------------------------------------------------------
深見 浩和(Hirokazu Fukami)

URI:http://fkm.s266.xrea.com/
email:
f-m...@users.sourceforge.jp
f_h...@hotmail.co.jp
fkm...@gmail.com

太陽

unread,
Apr 25, 2012, 10:07:00 AM4/25/12
to 日本Androidの会
回答ありがとうございます。

下にImageViewで画像を表示していまして、
Canvasは常に透明な状態にしておきたいので、塗りつぶすのは難しいかと思います。



On 4月25日, 午後11:01, Hirokazu Fukami <fkm...@gmail.com> wrote:
> こんばんはfkmです。
>
> canvas.drawColor(int)で一旦塗りつぶしちゃうのはどうでしょうか?
>
> 2012/4/25 太陽 <situmon.tai...@gmail.com>:
>
>
>
>
>
>
>
>
>
> > お絵かきアプリのようなものを作っています。
>
> > SurfaceViewクラスのインナークラスとしてHandlerを作成しました。
>
> > そのなかで
> > SurfaceViewクラス.getHolder().lockCanvas();でCanvasのインスタンスを取得。
> > canvas.drawPath(Path, Paint);を常時実行しており、
> > onTouchEventイベントでタップ情報をPathに追加し、即実行される仕組みです。
>
> > 入力した情報をすべて消去するボタンを配置し、それを実行した際にCanvasを初期化したいのですが、方法がわかりません。
>
> > 以下の方法を試しましたが、うまくいきませんでした。
> > 1.Pathをnew
> > 2.CanvasにBitmapをセットし、それを初期化
> > 3.Canvasをnew
>
> > 詳しい方、教えてください。
> > よろしくお願いいたします。
>
> > --
> > このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> > このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> > このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
> > 詳細については、http://groups.google.com/group/android-group-japan?hl=jaからこのグループにアクセスしてください。
>
> --
> -------------------------------------------------------------
> 深見 浩和(Hirokazu Fukami)
>
> URI:http://fkm.s266.xrea.com/
> email:
> f-m...@users.sourceforge.jp
> f_hy...@hotmail.co.jp
> fkm...@gmail.com

たろサ

unread,
Apr 25, 2012, 10:20:20 AM4/25/12
to android-g...@googlegroups.com
 たろサです。

 質問の意味がよく分からないのですが、

>>> 入力した情報をすべて消去するボタンを配置し、それを実行した際にCanvasを初期化したいのですが、方法
がわかりません。
>>> 2.CanvasにBitmapをセットし、それを初期化
> Canvasは常に透明な状態にしておきたいので、塗りつぶすのは難しいかと思います。

 ここらへんの内容から思うに、eraseColorで初期化したBitmapをCanvasにもっていったらだめですか?
 透明ですよ。

 全然見当はずれでしたら、ごめんなさい。
--
山本三七男 (Minao Yamamoto) ---------------- ハンドル:たろサ -----
E-Mail: taro...@gmail.com

太陽

unread,
Apr 25, 2012, 10:44:34 AM4/25/12
to 日本Androidの会
すみません。
クリアボタン押下で画面を初期表示状態(未入力)にするのが目的でした。

例)bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
上記で初期化したBitmapを再設定をしてもダメでしたが、
eraseColorは試していませんでした。

やってみます。ありがとうございます。
> E-Mail: taros...@gmail.com
Reply all
Reply to author
Forward
0 new messages