Я установил предварительно масштабированное растровое изображение в качестве источника ImageView. Затем я прочитал Матрицу ImageView
и сдвинул Битовую карту ImageView с помощью matrix.postTranslate(shiftX, shiftY)
.
Теперь я хочу увеличить / уменьшить изображение, сохраняя центр ImageView
в той же точке растрового изображения, что и до масштабирования.
Если я пытаюсь увеличить изображение с помощью matrix.postScale(zoom, zoom)
, точка, которую я хочу сохранить (синяя точка), переместится в другое место (фиолетовая точка).
Я пробовал несколько разных способов вернуть растровое изображение обратно, но не могу заставить его работать правильно. Я знаю исходный размер растрового изображения, размер ImageView, расстояния, отмеченные пунктирной линией. Пытался вычислить необходимый сдвиг и затем использовать matrix.postTranslate(-zoomshiftX, -zoomshiftY)
, но он не сдвигается правильно.
Даже обнаружил, что количество пикселей в растровом изображении не меняется после функции matrix.postScale () и пробовал matrix.postTranslate (-zoomshiftX / zoom, -zoomshiftY / zoom) - но все же не повезло.
Как мне добиться такого увеличения?