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

ビットマップの一部透過ぁ

いろいろ調べてたのですがぁ
canvas.clipRectとかで、
どうにかなるかと思ったのですが挙動が変なので
ピクセル単位で処理する事にしました。

具体的には



//Bitmap全体ピクセルを取り出して
//ピクセル単位でARGB処理する
//Bitmapの幅
int width = bitmap.getWidth();
//Bitmapの高さ
int height = bitmap.getHeight();
//ピクセル配列の作成
int pixels[] = new int[width * height];
//Bitmapをピクセル配列にピクセルARGBゲット
bitmap.getPixels(pixels, 0, width, 0, 0, width, height);
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
//ピクセル配列の一部を透過にする
if(y >= 35 && y <= 60 && x >= 20 && x <= 50){
pixels[x + y * width] = 0x00000000;
}
}
}
//ピクセル配列をBitmapにピクセルARGBセット
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);



上記は
ビットマップ全体のピクセル情報を配列に取出して
配列の一部ピクセル情報を透過にして
配列ピクセル情報をビットマップに戻す感じですね。
このやり方だとビットマップ全体を
一旦取出しているので
一部を透過にするだけには効率悪そうなので
下記の様にしてみた



//画像一部にピクセルをセットする

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



透過情報となる配列を作成して
ビットマップの指定位置にセットする様にすれば
一部が透過になる。

こんな感じですねぇ〜
android006


まあ、もっと簡単に出来るといいのだが(^^;)

これでほぼ作画で、
やりたい事は調べ終わったかぁ〜
簡単なゲームなら作れるかのぉ〜

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

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

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

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

※必須