Может ли кто-нибудь объяснить Матрицу (Mr.Anderson)?

Я довольно новичок в манипулировании изображениями вручную, поэтому, пожалуйста, несите меня.

У меня есть изображение, которое я разрешаю пользователю сжиматься / расти и двигаться.

Основное поведение работает отлично. Тем не менее, мне нужно иметь возможность захватить все, что находится в «окне просмотра» (видимый прямоугольник области отсечения), и сохранить его в виде отдельного растрового изображения.

Прежде чем я смогу это сделать, мне нужно исправить положение WHERE, когда изображение действительно и что отображается. Это оказалось более сложным, чем я мог себе представить.

Моя проблема в том, что документация Matrix абсурдно расплывчата, и я теряюсь относительно того, как я могу измерить координаты и размеры моего преобразованного изображения. Как я вижу, X, Y изображения остаются постоянными, даже когда пользователь сжимает / увеличивает его. Таким образом, хотя он сообщает, что он равен 0,0, он отображается (скажем) 100 100. И единственный способ получить эти координаты – сделать довольно уродливое вычисление (опять же … Я, вероятно, не делаю это самым элегантным способом, так как геометрия не моя сильная сторона).

Я как бы надеюсь, что у меня что-то не хватает и что есть способ вытащить автоматически переведенные координаты и размеры объекта.

В идеальном мире я мог бы вызвать (псевдо) myImg.getDisplayedWidth() и myImg.getDisplayedX() .

О, и я должен добавить, что это может быть проблемой, которую я вызываю сам, используя центр изображения как точку, из которой можно увеличивать / уменьшать. Если бы я оставил координату по умолчанию 0,0 как не меняющуюся точку, я думаю, что местоположение будет правильным, независимо от его размера. Итак … может быть, ответ на все это заключается в том, чтобы просто вычислить мое смещение центра и применить его к моим переводам?

Вся помощь очень ценится (и люди не произвольно воюют с титулом моего вопроса еще больше!).

Матричный метод mapPoints(float[] dst, float[] src) может использоваться для получения ряда переведенных точек с помощью преобразования Матрицы. Или в (слегка) более непрофессиональных терминах, экземпляр класса Matrix содержит не только инструкцию по переводу, но и методы удобства применения преобразования Матрицы к ряду точек.

Поэтому в вашем случае вам нужны только углы вашего нетранслируемого растрового изображения (x, y, ширина, высота) и передать угловые точки в этот метод, чтобы получить переведенные точки.

Intereting Posts
Android Thread изменить EditText Как вернуть массив или другие типы элементов коллекции из плагина phonegap android Приведение ActivityManager к «Больше не нужно» для тестирования Android POI: сбой при использовании autoSizeColumn () Уменьшите размер растрового изображения до указанного размера в Android Как отключить функцию копирования и прошлого текста для ANDROID, а также IOS, которая появляется после длительного нажатия на экране в приложении Phonegap Не могу обернуть голову вокруг фрагментов Android Android AlertDialog – цвет фона заголовка Загрузка изображений в ImageView на Android Аккумулятор изменил приложение радиоприемника на некоторых телефонах Как быть уверенным, что приложение Android будет работать на каждом устройстве Как установить приложение для Android в каталоге system / app без внедренного устройства, чтобы пользователь не смог удалить это приложение Проект Android / Scala в IntelliJ 14 компилируется, но сбой при запуске не находит Scala class Студия Android не перечисляет мой телефон в разделе «Выбрать устройство», Как отменить «перетащить» движение на Android Seekbar?