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