Как создать растровое изображение из холста пользовательского вида.
Как я могу получить растровое изображение холста, которое я получаю в onDraw?
Ответ 1
Невозможно извлечь Bitmap из Canvas. Единственный способ, которым вы можете получить доступ к нему, - это передать его самостоятельно при создании холста, подобного new Canvas(myBitmap), и сохранить ссылку.
EDIT2: см. комментарий @Alex comment - подход к передаче Bitmap в Canvas, похоже, не работает для более поздних версий Android.
EDIT: если вы не создаете Canvas самостоятельно, вы можете создать размер Bitmap размером экрана (или любой другой размер, который вам нужен), а затем передать его в вызовы Canvas in onDraw, подобные этому: canvas.setBitmap(myBitmap).
Ответ 2
Хотя для холста нет функции getBitmap(), так как вы создаете пользовательский вид, то вместо этого вы можете написать такую функцию внутри вашего класса представления.
public Bitmap get(){
return this.getDrawingCache();
}
Это возвращает растровое изображение представления, но важно, чтобы в конструкторе все вы добавляли это,
this.setDrawingCacheEnabled(true);
В противном случае getDrawingCache вернет null
Ответ 3
Я узнал, что Canvas имеет функцию setBitmap, но не getBitmap. Странно, но в любом случае, это позволяет мне самому создать растровое изображение и передать его на холст, сохранив ссылку.