<< 前のエントリトップページ次のエントリ >>
2011年03月03日

ビットマップに落書きぃ

試しで
onTouchEventとCanvasを使って
簡単な落書き機能を作ってみたぁ

具体的には

@Override
public boolean onTouchEvent(MotionEvent event) {

ImageView v2 = (ImageView) findViewById(R.id.imageView2);



float x = event.getX();
float y = event.getY();

int[] location = new int[2];
v2.getLocationOnScreen(location);

if(location[1] <= y && (v2.getHeight()+location[1]) >= y &&
location[0] <= x && (v2.getWidth() + location[0]) >= x ){


switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
xmoveBaf = x;
ymoveBaf = y;
 //break;
case MotionEvent.ACTION_UP:
 //break;
case MotionEvent.ACTION_MOVE:


Canvas canvas = new Canvas(bitmap);

if(item.equals("ペン")){
Paint paint = new Paint();
paint.setColor(Color.YELLOW);
paint.setAlpha(150);


paint.setStrokeWidth(8);

//ライン作画
canvas.drawLine(x-location[0], y-location[1],
xmoveBaf-location[0], ymoveBaf-location[1], paint);


//円形作画
canvas.drawCircle(x-location[0], y-location[1], 4, paint);
}

if(item.equals("消しゴム")){

//画像一部を透過にする
int delpixels[] = new int[10*10];
//ピクセル配列全体を透過にする
for (int i = 0; i < 10*10; i++) {
delpixels[i] = 0x00000000;
}
//画像にピクセル配列をセット
//setPixels(ピクセル配列,配列の開始インデックス,配列の折返し位置,
//      画像へのセット位置x,画像へのセット位置y,セット画像の幅,セット画像の高さ)
bitmap.setPixels(delpixels, 0, 10, (int)(x-location[0]), (int)(y-location[1]), 10, 10);

}

v2.setImageBitmap(bitmap);



xmoveBaf = x;
ymoveBaf = y;


break;
case MotionEvent.ACTION_CANCEL:

break;
}


}
return super.onTouchEvent(event);
}


ですね

こんな感じに、なりましたぁ

android007

「ペン」でペイントの際に
最初は円だけで作画したのですが
タッチを早く動かすと
タッチイベントのレスポンスで
円が、飛び飛びになってしまったので
円と円の間をラインで塗る処理を入れました。
作画に透過を入れてるので作画動作が解りやすいと思います。

スピナーの選択で
「消しゴム」にすると
10x10の範囲を透過にする
処理も入れてみましたぁ

投稿者:秀at 01:00| さんでープログラム(Android編) | コメント(0) | トラックバック(0)

◆この記事へのトラックバックURL:

http://control.onair-blog.jp/util/tb.php?us_no=1924&bl_id=1924&et_id=183890

◆この記事へのコメント:

※必須