2010-11-28 2 views
0

Я нарисовал 5 растровых изображений из .png файлов на холсте - голова, тело и две руки и ноги.Android Bitmap OnTouch Вопросы

Как определить, какие из них были затронуты OnTouch? И, более конкретно, могу ли я определить, касался ли OnTouch фактической формы части тела?

Я имею в виду, что сами .pngs являются прямоугольными, но знает ли Android, или я могу сказать, игнорировать прозрачность внутри изображения?

ответ

2

Вы можете получить цвет затронутого пикселя и сравнить его с цветом пикселя на фоне в этих координатах.

EDIT: ok, игнорируйте это, вы не можете получить цвет пикселя на холсте, поэтому вместо этого получите 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

Отличная идея, я бы даже не подумал, что это возможно. Мне нужно, чтобы google, как: a) узнать, какой пиксель был нажат, и b) узнать, какой именно цвет. Но большое спасибо за эту идею. – JimBadger 2010-11-28 17:51:34