Как я могу узнать, где на моем изображении я коснулся, если я переместил и изменил размеры моего изображения с помощью сжатия, перетаскивания и увеличения - PullRequest
4 голосов
/ 15 февраля 2012

У меня есть изображение, я использую его как карту изображения. Если бы изображение было исправлено, то проблем не было бы, но мне нужно увеличить и перетащить это изображение, а также получить и использовать координаты того места, где щелкнуло изображение.

Нужно ли точно следить за тем, насколько это изображение было перемещено и было изменено, или я могу получить точку 0x0 моего изображения (верхний левый угол моего изображения).

Есть ли другой способ сделать это

Я должен добавить, что я основал свои манипуляции с изображениями на этом превосходном учебнике http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2/1747?tag=rbxccnbzd1

1 Ответ

2 голосов
/ 25 февраля 2012

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

В частности, вы хотите преобразовать координаты x, y, где пользователь щелкнул экран, в соответствующую точку исходного изображения, используя обратную матрицы, которая использовалась для преобразования изображения в экран.

Немного псевдокода, предполагая, что matrix содержит преобразование, которое было применено к изображению:

// pretend user clicked the screen at {20.0, 15.0}
float x = 20.0;
float y = 15.0;

float[] pts[2];

pts[0] = x;
pts[1] = y;

// get the inverse of the transformation matrix
// (a matrix that transforms back from destination to source)
Matrix inverse = new Matrix();
if(matrix.invert(inverse)) {

    // apply the inverse transformation to the points
    inverse.mapPoints(pts);

    // now pts[0] is x relative to image left
    //     pts[1] is y relative to image top
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...