2012-03-20 2 views
1

Есть ли способ скопировать содержимое холста, на которое я только что нарисовал, в растровое изображение?Как скопировать холст в растровое изображение

EDIT: только уточнить, моя текущая процедура рисования работает следующим образом:

Canvas canvas = holder.lockCanvas(); 

if (canvas != null) 
{ 
    onDraw(canvas); // this does all the drawing 

    // at this point I would like to copy the canvas into a bitmap 

    holder.unlockCanvasAndPost(canvas); // this makes the canvas visible to the user 
} 

EDIT: Глядя на первый ответ писал, я написал следующий код:

if (grab_screen == -1) // draw and show on screen as normal 
{ 
    Canvas canvas = holder.lockCanvas(); 
    if(canvas != null) 
    { 
     onDraw(canvas); 
     holder.unlockCanvasAndPost(canvas); 
    }     
} 
else // draw into screengrab_bitmap[grab_screen] 
{ 
    Canvas canvas = new Canvas(screengrab_bitmap[grab_screen]); 
    onDraw(canvas); 
    grab_screen = -1; 
} 

Это должно означать, что если я установил grab_screen в n, то при следующем вызове onDraw изображение будет записано на screengrab_bitmap [n].

ответ

6

Создайте «пустой» растровый рисунок, назначьте его Canvas (новый Canvas (newBitmap)), нарисуйте объекты в этом холсте. Все, что вы рисуете на холсте, будет рисоваться в растровом изображении.

+0

Выглядит хорошо. Предположительно, я не буду одновременно видеть рисунок, сделанный onDraw (см. Мои правки). А как насчет unlockCanvasAndPost? Я полагаю, что я просто не должен его называть. – Mick

+0

Взгляните, может быть, поможет: http://javafriend.yolasite.com/myandroid/saving-bitmap-from-surface-view http://www.tutorialforandroid.com/2010/11/drawing-with-canvas-in -android-saving.html –

Смежные вопросы