2016-02-27 2 views
0

Я пытаюсь объединить 3 imageViews в битмэп я использую холст и здесь функцияКак нарисовать 3 растровых изображений в холст

private Bitmap createSingleImageFromMultipleImages() { 

    Bitmap formBitmap = getBitmapFromImageView(formView); 
    Bitmap idFrontBitmap = getBitmapFromImageView(idFrontView); 
    Bitmap idBackBitmap = getBitmapFromImageView(idBackView); 

    Bitmap allBitmaps = null; 

    int width, height = 0; 

    width = formBitmap.getWidth() + idFrontBitmap.getWidth() + idBackBitmap.getWidth(); 
    if (formBitmap.getHeight() > idFrontBitmap.getHeight()) { 
     height = formBitmap.getHeight(); 
    } else { 
     height = idFrontBitmap.getHeight(); 
    } 

    allBitmaps = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 

    Canvas comboImage = new Canvas(allBitmaps); 

    comboImage.drawBitmap(formBitmap, formBitmap.getWidth(), 0f, null); //this is not drawn 
    comboImage.drawBitmap(idFrontBitmap, formBitmap.getWidth(), 0f, null); //this is not drawn 
    comboImage.drawBitmap(idBackBitmap, idFrontBitmap.getWidth(), 0f, null); //this is drawn 

    return allBitmaps; 
} 

// это преобразует ImageView к растровым

public Bitmap getBitmapFromImageView(ImageView imageView) { 
    imageView.setDrawingCacheEnabled(true); 
    Bitmap scaledBitmap = imageView.getDrawingCache(); 
    return scaledBitmap; 
} 

в настоящее время рисуется только одно изображение, остальные части пусты Я подтвердил, что ImageView не является нулевым

Снимок экрана с результатом.

enter image description here

+0

Все 3 изображения нарисованы * друг на друге *. Вот почему, кажется, только последний. –

+0

@DavidMedenjak Как я могу решить эту проблему, я хочу, чтобы изображения были рядом друг с другом –

ответ

1

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

Вам необходимо правильно разместить изображения, а не просто нарисовать их в любом месте.

Canvas имеет несколько методов, которые могут достичь этого, одна из возможностей заключается в использовании drawBitmap(bitmap, left, top, paint), как и вы, но вы должны использовать разные значения для смещений.

// first, x = 0 
comboImage.drawBitmap(formBitmap, 0f, 0f, null); 
// second, offset by first width 
comboImage.drawBitmap(idFrontBitmap, formBitmap.getWidth(), 0f, null); 
// last, offset by first and second width 
comboImage.drawBitmap(idBackBitmap, formBitmap.getWidth() + idFrontBitmap.getWidth(), 0f, null); 

Это должно сработать.

+0

спасибо большое, это сработало ... –

+0

'int android.graphics.Bitmap.getWidth()' в вопросе ссылки на нулевой объект? –

+0

@EmreTekin http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it/218510#218510 –