обнаружение прикосновения к растровому изображению, нарисованному с помощью преобразований Rect

Для растровых изображений, нарисованных с простыми координатами (x, y),

float _x = x - (bitmap.getWidth() / 2);
float _y = y - (bitmap.getHeight() / 2);
canvas.drawBitmap(bitmap, _x, _y, null);

Я могу определить, было ли затронуто растровое изображение.

Я рисую растровое изображение на экране с помощью

    dest = new Rect(0,0,0,0);
    src = new Rect(0,0,0,0);
    mSpriteHeight = (int) (sprite_pixel_height * mScale + 0.5f);
    mSpriteWidth = (int) (sprite_pixel_width * mScale + 0.5f);
    src.top = 0;
    src.left = 0;
    src.bottom = mSpriteHeight;
    src.right = mSpriteWidth;
    dest.top = (int) (_x * mScale);
    dest.bottom = (int) ((_x + mSpriteHeight) * mScale);
    dest.left = (int) (_y * mScale);
    dest.right = (int) ((_y + mSpriteWidth) * mScale);
    canvas.drawBitmap(bitmap, src, dest, null);

пытаясь включить плотность экрана, потому что "Эта функция игнорирует плотность, связанную с растровым изображением. ... поэтому к ней уже должен быть применен соответствующий коэффициент масштабирования."

Мне не удалось обнаружить прикосновения к переведенным растровым изображениям. Мне нужно сделать аналогичный перевод, используя mScale, но я теряюсь.

Есть ли лучший способ определить src и dest в моем исходном canvas.drawBitmap(bitmap, src, dest, null);?

Кто-нибудь знает пример, где это было сделано? Кажется, я не могу найти правильные условия поиска, чтобы найти такой пример.


person Thunder Rabbit    schedule 07.07.2011    source источник


Ответы (1)


Мне кажется, что применяется тот же метод, что и для простых координат x,y. Вам просто нужно использовать координаты и размер Rect dest, чтобы вычислить, было ли затронуто растровое изображение.

Другими словами, вам нужно сделать что-то вроде этого:

public boolean picked(Rect dest, int touchX, int touchY) {
     if(touchX > dest.left && touchX < dest.left + dest.width() &&
        touchY > dest.top && touchY < dest.top + dest.height())
            return true;
     return false;
}
person Joru    schedule 11.08.2011