2010-11-28 90 views
0

我从画布上的.png文件绘制了5个位图 - 头部,身体和两条胳膊和腿。Android位图OnTouch问题

如何检测OnTouch上触摸了哪些触摸?而且,更具体地说,我可以检测OnTouch是否在触摸的身体部位的实际形状内?

我的意思是,显然,.png本身是矩形的,但Android知道,或者我可以告诉它,忽略图像中的透明度?

回答

2

您可以获得所触摸像素的颜色,并将其与背景中像素的颜色进行比较。

编辑:好吧,忽略这一点,你不能获得画布上的像素的颜色,所以取而代之,获取触摸的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)找出它是什么颜色,但。但非常感谢这个想法。 – JimBadger 2010-11-28 17:51:34