Как нарисовать маленькое изображение типа логотипа в правом нижнем углу холста?

#android #android-layout #canvas #android-emulator #android-widget

#Android #android-layout #холст #android-эмулятор #android-виджет

Вопрос:

В моем приложении я использую canvas для рисования. Теперь в этом приложении я хочу нарисовать маленькое изображение логотипа в правом нижнем углу холста, прежде чем сохранять его в Bitmap. Итак, как сделать это возможным?

Ответ №1:

Если я вас правильно понял, попробуйте

 context.drawImage(img_elem, x, y);
  

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

Чтобы использовать x и y, в зависимости от того, куда вы хотите вставить изображение, попробуйте что-то вроде:

 x = canvasWidth-25;
y = canvasHeight-25;
  

Разместить его в правом нижнем углу.

Затем преобразуйте в изображение, как обычно:

 var dataURL = canvas.toDataURL();
  

Комментарии:

1. Пожалуйста, посмотрите мой ответ. Я получил решение.

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

Ответ №2:

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

  public static Bitmap addLogo(Bitmap mainImage, Bitmap logoImage) { 
    Bitmap finalImage = null; 
        int width, height = 0; 
        width = mainImage.getWidth(); 
        height = mainImage.getHeight(); 
        finalImage = Bitmap.createBitmap(width, height, mainImage.getConfig()); 
        Canvas canvas = new Canvas(finalImage); 
        canvas.drawBitmap(mainImage, 0,0,null);
        canvas.drawBitmap(logoImage, canvas.getWidth()-logoImage.getWidth() ,canvas.getHeight()-logoImage.getHeight() ,null);

        return finalImage; 
}
  

Надеюсь, этот код поможет кому-либо другому.
Спасибо.