Как я могу получить растровое изображение холста, которое я получаю в 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. Странно, но в любом случае, это позволяет мне самому создать растровое изображение и передать его на холст, сохранив ссылку.