#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;
}
Надеюсь, этот код поможет кому-либо другому.
Спасибо.