Я пытаюсь получить изображение растрового изображения, которое будет нарисовано на моем холсте в моем проекте андроида. Я занимаюсь этим уже более двух дней и просто не могу понять это. Я прикрепил код, в котором вызывается функция.canvas.drawBitmap (bitmap, null, RectF, null) not drawing
private void drawLogo(Canvas canvas)
{
Paint test = new Paint();
test.setColor(Color.RED);
test.setStrokeWidth(4);
test.setStyle(Style.FILL_AND_STROKE);
//Here was my problem
//Changed to --> new RectF(scale_x, scale_y, 5*scale_x, 5*scale_y) and works now
RectF logoSize = new RectF(scale_x, 5*scale_y, 5*scale_x, scale_y);
Bitmap logoBitmap = getImageMap().get("LOGO");
canvas.drawRect(logoSize, test);
canvas.drawBitmap(logoBitmap, null, logoSize, null);
}
Метод canvas.drawRect (RectF, краска) рисует прямоугольник правильно, но растровое изображение не отображается на всех. Любое понимание было бы очень благодарно, спасибо заранее.
EDIT: Я добавил код из моего метода getImageMap() в соответствии с запросом. Он в основном просто возвращает все изображения в моих ресурсах/изображениях/папке как карту, поэтому я могу легко вытащить любое изображение из папки.
private Map<String, Bitmap> getImageMap()
{
if (imageMap == null)
{
imageMap = new HashMap<String, Bitmap>();
try
{
String[] files = getContext().getAssets().list("images");
for (String imageName : files)
{
// Construct a BitMap from an asset
Bitmap bitmap = BitmapFactory.decodeStream(
getContext().getAssets().open("images/" + imageName));
imageMap.put(imageName.replaceFirst("\\..*", ""), bitmap);
}
}
catch (IOException e) {Log.e("assets/images/ is empty", "IOException", e);}
}
return imageMap;
}
EDIT2: Я нашел свою ошибку, я обновил ее в коде. Я просто хочу поблагодарить тех, кто дал мне быструю обратную связь, я ценю это.
Можете ли вы дать более подробную информацию о том, что getImageMap(). Get ("LOGO"); делается? Кроме того, у вашего растрового изображения есть альфа-канал? Наконец, попробовали ли вы обернуть свой логотипBitmap в BitmapDrawable и убедиться, что он выглядит так, как вы ожидаете? – TheIT
Я уверен, что getImageMap(). Get («LOGO») возвращает правильное растровое изображение, которое я хочу, я проверил его (я все равно отправлю свой код выше). Что касается альфа-канала, я не верю, так как я использую API 10 (я думаю, что альфа-канал для растровых изображений не был введен до API 12). Я не пробовал BitmapDrawable, но я попробовал использовать другие растровые изображения, чтобы проверить, был ли он каким-то образом искажен. Я скоро вернусь к вам. –
Просто некоторые мысли, может ли logoBitmap быть нулевым? Я согласен с Junior Buckeridge, пытаясь упростить проблему настолько, насколько это возможно. Возможно, просто проверьте, отобразив canvas = new Canvas (logoBitmap); и ничего больше? – TheIT