Android Bitmap OnTouch Вопросы - PullRequest
       10

Android Bitmap OnTouch Вопросы

0 голосов
/ 28 ноября 2010

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

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

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

1 Ответ

2 голосов
/ 28 ноября 2010

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

РЕДАКТИРОВАТЬ: хорошо, игнорируйте это, вы не можете получить цвет пикселя на холсте, поэтому вместо этого получите 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
             }
         }
     }
}
...