2010-11-28 7 views
0

私はキャンバス上の.pngファイルから5つのビットマップを描画しました。ヘッド、ボディ、2本の腕と脚です。Androidビットマップオンタッチの質問

これらのうちどれがOnTouchでタッチされたかをどのように検出できますか?さらに具体的には、OnTouchがタッチされた身体部分の実際の形状内にあるかどうかを検出できますか?

明らかに、.png自体は長方形ですが、Androidは画像内の透明度を無視することを知っていますか、それとも教えてもらえますか?

答えて

2

タッチされたピクセルの色を取得し、それらの座標でバックグラウンド上のピクセルの色と比較することができます。

EDIT:無視して、キャンバス上のピクセルの色を取得することはできません。代わりに、タッチのx、yを取得し、身体部分の画像のいずれかがタッチされているかどうかを確認します。そのため、タッチx、yから画像のx、yを取り出し、画像のピクセルを取得します。透明またはカラーにする必要があります。

public boolean onTouchEvent(MotionEvent event) 
{ 
    int x = (int) event.getX(); 
    int y = (int) event.getY(); 
    int offsetx, offsety; 

    for(int i = 0;i<NUM_OF_BODY_PARTS;i++) 
    { 
     if(bodyPartRect[i].intersects(x,y,x+1,y+1)) 
     { 
      offsetx = x - bodyPartRect[i].left; 
      offsety = y - bodyPartRect[i].top; 
      if(bodyPartBMP[i].getPixel(offsetx,offsety) == TRANSPARENT) 
      { 
       //whatever 
      } 
     } 
    } 
} 
+0

素晴らしいアイデアは、私はそれが可能であるとは考えていませんでした。私はどのようにa)どのピクセルが押されたかを発見し、b)それがどんな色であるかを調べる方法をGoogleに知らせる必要があります。しかし、このアイデアには大変感謝しています。 – JimBadger

+0

私はまだ私の知識をさらに広げるために、他の可能な解決策に興味があります。 – JimBadger