Основное описание того, что я пытаюсь сделать:
Загрузите фоновое изображение, нарисуйте некоторый текст в новый растровый слой, поместите этот текст поверх фонового изображения там, где я хочу, чтобы оно появилось, затем сохраните фоновое изображение с новым слоем поверх него, где я его разместил.
Проблема:
У меня проблема в том, что когда я закрашиваю текст поверх фонового изображения, он оказывается в неправильной позиции х / у.
Например:
1. Я загружаю изображение размером 640x480 с ScaleType, установленным в Fit_Start (что уменьшает его до 1/2 размера). Я отслеживаю соотношение и использую его при рисовании текста до конечного изображения.
Затем я создаю пустое растровое изображение наложения, рисую на нем какой-то текст, обрезаю дополнительное прозрачное пространство и помещаю его в другое изображение (ScaleType of Matrix)
Затем я позиционирую это новое изображение с помощью мыши и метода onTouchEvent. Я слежу за X и Y:
float X = event.getX ();
float Y = event.getY () - 50; // Строка заголовка, строка состояния
overlayView.layout ((int) X, (int) Y, overlay.getWidth () + (int) X, overlay.getHeight () + (int) Y);
Затем я пытаюсь записать текст в окончательное изображение (фоновое изображение), используя X & Y, за исключением того, что я удваиваю X & Y, так как я знаю, что изображение было уменьшено вдвое, чтобы соответствовать экрану.
Окончательный результат - текст записывается в неправильном месте. В итоге получается немного слишком много X и недостаточно Y (например, 25+ в зависимости от масштаба фонового изображения - это варьируется).
Где-то моя математика неверна, или я забыл добавить что-то в формулу для вычисления правильной позиции на фоне, где должен быть нарисован текст. Я работал над этим в течение нескольких часов и не смог точно определить проблему.
Последнее, что я попробовал, это учел строку заголовка и строку состояния, которая на симуляторе занимает примерно 50 пикселей. Итак, я вычитаю это из Y, что делается при перетаскивании. Но это все равно не исправляет Y, поскольку он отличается от разных величин в зависимости от размеров фонового изображения.
У кого-нибудь есть идеи, что я делаю не так?