2010-11-11 2 views
8

Я пытаюсь понять, как рисовать растровое изображение в android, и сохранить копию этих измененных растровых изображений для функции отмены.Как нарисовать растровое изображение в андроиде?

Bitmap b = ... 
Paint p = new Paint(); 
canvas.drawBitmap(b, new Matrix(), null); 
canvas.drawCircle(0,0,20,20); 
//does Bitmap b have the circle drawn on it next time? 

Или как я могу получить растровое изображение после того, как его было обращено на с холстом (я хочу, чтобы сохранить стек растровых изображений с изменениями применяется холст рисунка)? Возможно, я собираюсь сделать это совершенно неправильно.

ответ

17

Используйте new Canvas(Bitmap bitmap), чтобы предоставить CanvasBitmap, который будет содержать результаты ваших операций с чертежами.

Оригинал Bitmap, который вы рисуете на своем Canvas с drawBitmap, никогда не будет изменен.

После каждой операции, проводимой пользователем вы могли бы:

  • держать в памяти список операций сделали
  • сохранения промежуточных результатов на внешнее запоминающее устройство с Bitmap.compress

Другой подход может состоять в том, чтобы использовать LayerDrawable для последовательного совмещения операций рисования друг с другом. Вы можете себе представить, что пользователь может отключить каждую отдельную операцию.

+1

Прямо сейчас вырисовывали кучу кругов на основе пользовательского события касания, но по мере того, как больше кругов рисуется и удерживается в памяти, оно значительно замедляется. Вот почему мы искали «Сохранить» пользовательский ввод/действие, применяя изменения к растровому изображению, таким образом, только одно растровое изображение рисуется каждый раз, а не сохраняет и рисует тысячи кругов. –

+0

Таким образом, вы можете использовать Bitmap.copy (...) в вашем растровом изображении назначения и предоставить холст с полученным растровым изображением в качестве нового назначения чертежа с Canvas.setBitmap() –

0

Вы можете увидеть полное руководство, как сделать текст здесь:

https://www.skoumal.net/en/android-how-draw-text-bitmap/

Короче говоря:

Скопируйте растровое изображение, чтобы сделать его изменчивый и создать холст на его основе.

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