Создание пустого растрового изображения и рисование через холст в Android

106

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

Сунил Панди
источник

Ответы:

197

Это, вероятно, проще, чем вы думаете:

int w = WIDTH_PX, h = HEIGHT_PX;

Bitmap.Config conf = Bitmap.Config.ARGB_8888; // see other conf types
Bitmap bmp = Bitmap.createBitmap(w, h, conf); // this creates a MUTABLE bitmap
Canvas canvas = new Canvas(bmp);

// ready to draw on that bitmap through that canvas

Вот серия уроков, которые я нашел по теме: Рисование с помощью Canvas Series

большие камни
источник
Если я создам это в отдельном классе, как я могу ссылаться на растровое изображение в другом классе. Например: Bitmap text = BitmapFactory.decodeResource (mContext.getResources (), Что сюда поместить?); Мне нужен textView в живых обоях opengl. Заранее спасибо
Стив С.
Привет @bigstones Я слежу за вашим кодом для создания растрового изображения в onSizeChanged (), когда я создаю растровое изображение, я получаю OutOfMemoryError, пожалуйста, см. Этот stackoverflow.com/questions/24303759/…
user123456
Как это можно сделать в другом потоке при использовании SurfaceView?
Zach H
-3

Не используйте Bitmap.Config.ARGB_8888

Вместо этого используйте int w = WIDTH_PX, h = HEIGHT_PX;

Bitmap.Config conf = Bitmap.Config.ARGB_4444; // see other conf types
Bitmap bmp = Bitmap.createBitmap(w, h, conf); // this creates a MUTABLE bitmap
Canvas canvas = new Canvas(bmp);

// ready to draw on that bitmap through that canvas

ARGB_8888 может вызвать проблемы с OutOfMemory при работе с большим количеством растровых изображений или большими растровыми изображениями. Или, что еще лучше, постарайтесь избегать использования самой опции ARGB.

user2903200
источник
12
ARGB_4444 устарел ( developer.android.com/reference/android/graphics/… )
Аллен