Использование setScale и setTranslate (Матрица)
в моем приложении для Android у меня есть изображение, которое загружается. С помощью этого изображения пользователь может увеличивать, уменьшать и перемещать его вперед и назад. В настоящее время я могу заставить работать только одного.
после Большого тестирования я определил, что все, что я называю вторым, работает.
matrix.setScale(zoom, zoom); // this will not work
matrix.setTranslate(currentX, currentY); // this will work
canvas.drawBitmap(image, matrix, null);
Если я запустил все тот же код, но просто переключил setScale second, он будет работать, но setTranslate не будет.
Кажется, что это должен быть простой ответ. BTW: с способ настройки моего кода с помощью post не будет практичным.
matrix.postScale();
matrix.postTranslate();
спасибо заранее
2 ответов
при вызове любого из методов set* () вы заменяете все содержимое матрицы. В первом примере учитывается только setTranslate (). Для объединения операций перевода и масштабирования необходимо использовать методы pre*() и post* ().
код ответа Romain
matrix.setScale(zoom, zoom); // this will not work
matrix.postTranslate(currentX, currentY); // this will work
canvas.drawBitmap(image, matrix, null);