2014-01-05 3 views
1

Я пытаюсь наложить растровое изображение на другое, поместив его в то место, где пользователь прикасается. Вот код:Canvas.drawBitmap() Не правильное размещение изображения

public static Bitmap mergeImage(Bitmap base, Bitmap overlay, float x, float y) 
{ 
    Bitmap mBitmap = Bitmap.createBitmap(base.getWidth(), base.getHeight(), Config.ARGB_8888); 
    Canvas canvas = new Canvas(mBitmap); 
    canvas.drawBitmap(base, 0, 0, null); 
    canvas.drawBitmap(overlay, x, y, null); 
    return mBitmap; 
} 

Проблема здесь есть, хотя координаты у х & получаются правильно (я проверил), наложение растровых изображений не место правильно.

Когда вокруг верхней левой части изображения, размещение правильное. Тем не менее, когда я двигаюсь вправо и вправо, место, похоже, меняется по-разному (т. Е. Если я касаюсь нижнего правого угла экрана, наложение помещается где-то около середины изображения, если я касаюсь нижней левой части, он расположен ближе к середине слева от изображения и т. д.)

Оба изображения имеют одинаковую плотность (320).

Редактировать: Новая проблема, я уменьшил размеры обоих изображений, и теперь размещение примерно точный. Но сохранение изображения на SD-карту перекосы накладываемого изображения к другому (и довольно хаотическое) место

ответ

0

Я нашел решение с использованием матрицы для заданного местоположения и масштаба х, у

public static Bitmap mergeImage(Bitmap base, Bitmap overlay, float x, float y) 
    { 
     Bitmap mBitmap = Bitmap.createBitmap(base.getWidth(), base.getHeight(), Config.ARGB_8888); 
     Canvas canvas = new Canvas(mBitmap); 
     Matrix matrix = new Matrix(); 
     matrix.postTranslate(x,y); 
     canvas.drawBitmap(base, 0, 0, null); 
     canvas.drawBitmap(overlay, matrix, null); 
     return mBitmap; 
    } 

я провожу что-то подобное и Я нашел решение, вы можете видеть мое сообщение в сообщении siguiete.

canvas.drawBitmap bad Location and size (not placing image correctly)

Смежные вопросы