Как определить фактическое положение изображения внутри ImageView с помощью матрицы? - PullRequest
2 голосов
/ 09 февраля 2012

У меня есть ImageView с типом масштаба ScaleType.MATRIX. Пользователь может вращать, масштабировать и перетаскивать изображение внутри него. То, что я хотел знать, это фактическое положение изображения x, y после изменений, выполненных пользователем?

Я пытаюсь получить положение x, y из его ImageMatrix

Matrix m = new Matrix(); 
m.set(imgView.getImageMatrix()); 
float[] value = new float[9]; 
m.getValues(value); 
Log.d("cutt matrix~~~~~~~~", 
        value[Matrix.MSCALE_X] + " ## " 
        + value[Matrix.MSCALE_Y] + " ## " 
        + value[Matrix.MSKEW_X] + " ## " 
        + value[Matrix.MSKEW_Y] + " ## " 
        + value[Matrix.MTRANS_X] + " ## " 
        + value[Matrix.MTRANS_Y] + " ## " 
        + value[Matrix.MPERSP_0] + " ## " 
        + value[Matrix.MPERSP_1] + " ## "
        + value[Matrix.MPERSP_2]);

Если пользователь не повернул изображение, value[Matrix.MTRANS_X] & value[Matrix.MTRANS_Y] даст мне правильную позицию x, y .. Но если пользователь поворачивает изображение каким-либо образом, он дает неправильную позицию x, y ..

Кто-нибудь может объяснить, почему? И как получить правильную позицию после поворота. Спасибо ...

1 Ответ

0 голосов
/ 15 мая 2012

Попробуйте записать точку отсчета, например, в верхнем левом углу (x, y) и обновлять ее изменения каждый раз, когда вы изменяете изображение.

...