Я довольно новичок в манипулировании изображениями вручную, поэтому, пожалуйста, потерпите меня.
У меня есть изображение, которое я позволяю пользователю уменьшать / увеличивать и перемещать.
Базовое поведение работает отлично. Однако мне нужно иметь возможность захватывать все, что находится в «области просмотра» (прямоугольник видимой области отсечения), и сохранять его в виде отдельного растрового изображения.
Прежде чем я смогу это сделать, мне нужно выяснить, ГДЕ изображение на самом деле и что отображается. Это оказывается сложнее, чем я мог себе представить.
Моя проблема в том, что документация по матрице абсурдно расплывчата, и я заблудился относительно того, как я могу измерить координаты и размеры моего преобразованного изображения. На мой взгляд, X, Y изображения остаются постоянными даже при уменьшении / увеличении пользователем. Таким образом, даже если он сообщает, что он находится на уровне 0,0, он отображается на (скажем) 100 100. И единственный способ получить эти координаты - сделать довольно уродливые вычисления (опять же ... я, вероятно, не делаю это самым элегантным способом, так как геометрия не моя сильная сторона).
Я надеюсь, что что-то упустил и что есть какой-то способ получить автоматически переведенные координаты и размеры объекта.
в идеальном мире я мог бы назвать (псевдо) myImg.getDisplayedWidth()
и myImg.getDisplayedX()
.
О, и я должен добавить, что это может быть проблемой, которую я сам вызываю, используя центр изображения в качестве точки, из которой нужно расти / сжиматься. Если бы я оставил координату 0,0 по умолчанию в качестве неизменяемой точки, я думаю, что местоположение будет правильным независимо от его размера. Итак ... может быть, ответ на все это состоит в том, чтобы просто выяснить смещение моего центра и применить его к моим переводам?
Вся помощь очень ценится (и люди, которые не произвольно возятся с заголовком моего вопроса, тем более!).