Как узнать масштаб графической матрицы в Android - PullRequest
18 голосов
/ 04 марта 2011

Так что, кажется, довольно просто сделать масштабирование в Android - но я также хотел бы иметь возможность сделать снимок назад, когда он выходит за границы, и сделать это максимально Разумно, кажется, делать такие вещи, как когда масштаб <1, масштабировать до 1. Однако я не могу найти хороший способ <em>извлечь масштаб из графической матрицы.

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

1 Ответ

49 голосов
/ 31 марта 2011
float[] f = new float[9];
matrix.getValues(f);

float scaleX = f[Matrix.MSCALE_X];
float scaleY = f[Matrix.MSCALE_Y];

вероятно будет тем, что вы ищете. приведенные значения будут следующими:

0: шкала Х

1: перекос X

2: Перевести X

3: шкала Y

4: перекос Y

5: Перевести Y

6: Перспектива 0

7: Перспектива 1

8: Перспектива 2

...