Добавление оверлейного изображения в положение перетаскивания на окончательном растровом изображении - Android - PullRequest
0 голосов
/ 08 января 2010

Основное описание того, что я пытаюсь сделать: Загрузите фоновое изображение, нарисуйте некоторый текст в новый растровый слой, поместите этот текст поверх фонового изображения там, где я хочу, чтобы оно появилось, затем сохраните фоновое изображение с новым слоем поверх него, где я его разместил.

Проблема: У меня проблема в том, что когда я закрашиваю текст поверх фонового изображения, он оказывается в неправильной позиции х / у.

Например: 1. Я загружаю изображение размером 640x480 с ScaleType, установленным в Fit_Start (что уменьшает его до 1/2 размера). Я отслеживаю соотношение и использую его при рисовании текста до конечного изображения.

  1. Затем я создаю пустое растровое изображение наложения, рисую на нем какой-то текст, обрезаю дополнительное прозрачное пространство и помещаю его в другое изображение (ScaleType of Matrix)

  2. Затем я позиционирую это новое изображение с помощью мыши и метода 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);

  3. Затем я пытаюсь записать текст в окончательное изображение (фоновое изображение), используя X & Y, за исключением того, что я удваиваю X & Y, так как я знаю, что изображение было уменьшено вдвое, чтобы соответствовать экрану.

  4. Окончательный результат - текст записывается в неправильном месте. В итоге получается немного слишком много X и недостаточно Y (например, 25+ в зависимости от масштаба фонового изображения - это варьируется).

Где-то моя математика неверна, или я забыл добавить что-то в формулу для вычисления правильной позиции на фоне, где должен быть нарисован текст. Я работал над этим в течение нескольких часов и не смог точно определить проблему.

Последнее, что я попробовал, это учел строку заголовка и строку состояния, которая на симуляторе занимает примерно 50 пикселей. Итак, я вычитаю это из Y, что делается при перетаскивании. Но это все равно не исправляет Y, поскольку он отличается от разных величин в зависимости от размеров фонового изображения.

У кого-нибудь есть идеи, что я делаю не так?

1 Ответ

0 голосов
/ 08 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...