如何在Android中的位图绘制?

我想弄清楚如何在android中绘制一个位图,并保留一个这些改变的位图副本的撤消function。

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? 

或者如何获得位图后canvas上(我想保留一堆位图与canvas绘制应用的更改)? 也许我正在做这个完全错误的事情。

Solutions Collecting From Web of "如何在Android中的位图绘制?"

使用new Canvas(Bitmap bitmap)Canvas提供一个包含绘制操作结果的位图。

您用drawBitmapCanvas上绘制的原始Bitmap将永远不会被修改。

在用户完成每个操作之后,您可能会:

  • 在内存中保存已完成的操作列表
  • 使用Bitmap.compress将中间结果保存到外部存储器

另一种方法是使用LayerDrawable将相继的绘图操作堆叠在一起。 您可以想象允许用户禁用每个单独的操作。

你可以在这里看到完整的指导如何绘制文本:

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

长话短说:

复制你的位图,使其可变,并创build基于它的canvas。