Я пишу приложение для Android (хотя я думаю, что это общий вопрос), и мне нужно отобразить большое изображение (в ImageView), которое можно прокручивать и масштабировать. Мне удалось получить прокрутку, чтобы работать, захватывая события касания и выполняя переводы матриц, и теперь я работаю над масштабированием.Правильные преобразования для масштабирования изображения
Если я просто применяю масштабное преобразование к изображению, оно масштабируется в начале координат, которое является верхним левым углом экрана. Я хотел бы увеличить масштаб в центре экрана. Из того, что я читал, это означает, что мне нужно преобразование, чтобы сделать начало координат в центре экрана. Я думаю, что требуется что-то вроде включено следующее: предположим, что центр экрана (5, 5) для простоты ...
-Translate by (-5, -5)
-Scale by the zoom factor
-Translate by (+5, +5)*zoomfactor
Unfortunatly, это не кажется, что работы- трансфокатора, кажется, идет где-нибудь, НО центр ... может кто-то помочь мне здесь?
EDIT: Это код, который теперь работает
Matrix zoommatrix = new Matrix();
float[] centerpoint = {targetimageview.getWidth()/2.0f, targetimageview.getHeight()/2.0f};
zoommatrix.postScale(zoomfactor, zoomfactor, centerpoint[0], centerpoint[1]);
zoommatrix.preConcat(targetimageview.getImageMatrix());
targetimageview.setImageMatrix(zoommatrix);
targetimageview.invalidate();
вы можете разместить свой код преобразования? – AGrunewald