Как узнать масштаб графической матрицы в Android
Таким образом, было довольно легко сделать щепотку увеличения в андроиде - но я также хотел бы иметь возможность привязать изображение, когда оно выходит из и сделать это наиболее разумным, по-видимому, делать такие вещи, как когда масштаб & 1, перемасштабирование до 1. Однако я не могу найти хороший способ получить масштаб из графической матрицы.
Одним из возможных решений может быть сопоставление точки с помощью функции map mapPoints и посмотреть, где она заканчивается, но в дополнение к тому, что она обманчива, это просто кажется уродливым и косвенным для меня. Есть ли лучшие решения для получения масштаба из графической матрицы Android?
Ответы
Ответ 1
float[] f = new float[9];
matrix.getValues(f);
float scaleX = f[Matrix.MSCALE_X];
float scaleY = f[Matrix.MSCALE_Y];
вероятно, будет тем, что вы ищете. указанные значения будут следующими:
0: масштаб X
1: Skew X
2: Перевести X
3: Масштаб Y
4: Skew Y
5: Перевести Y
6: Перспектива 0
7: Перспектива 1
8: Перспектива 2
Ответ 2
Вот простой способ для записи содержимого матрицы:
private void logMatrix(String label, Matrix matrix) {
float[] matrixVals = new float[9];
matrix.getValues(matrixVals);
Log.e(TAG, String.format("%s: %s\nscale (x,y) = (%f, %f)\ntranslate (x,y) = (%f, %f)\nskew (x,y) "
+ "= (%f, %f)\nperspective-0 = %f\nperspective-1 = %f\nperspective-2 = %f",
label, matrix, matrixVals[Matrix.MSCALE_X], matrixVals[Matrix.MSCALE_Y],
matrixVals[Matrix.MTRANS_X], matrixVals[Matrix.MTRANS_Y],
matrixVals[Matrix.MSKEW_X], matrixVals[Matrix.MSKEW_Y],
matrixVals[Matrix.MPERSP_0], matrixVals[Matrix.MPERSP_1], matrixVals[Matrix.MPERSP_2]));
}