我如何使用canvas.save和canvas.restore?

Mar*_*ten 2 java android android-canvas

可能重复:
我可以将大量位图保存到一个位图吗?(2d)的

我想知道canvas.save和canvas.restore是如何工作的.

我希望它如何工作,以及我如何使用它(但不起作用).

  1. 锁定画布
  2. 用unlockandpost做一些绘图
  3. canvas.save()(存储int)
  4. 做一些更多的图纸
  5. 张贴画布
  6. 从第3步恢复画布
  7. 做一些更多的图纸,从6重复(循环)

我真正需要的是在某个阶段(背景)保存我的画布,然后在它上面绘制对象,而不必每次我想要更新我的画布时绘制背景.

Reu*_*ton 9

Canvas.save()和restore()不作用于附加到画布的位图......它们用于控制画布绘制环境的各个方面,特别是当前剪切区域和矩阵.

如果你想绘制一个旋转的精灵,你可以使用save()并恢复.要做到这一点,你首先保存()当前的画布状态,然后你翻译(),以便原点 - 像素地址(0,0) - 你想要精灵去的地方,然后你旋转(),然后你可以drawBitmap().最后,您可以将绘图环境恢复()恢复正常.

所以你每次都注定要画背景.如果这是一个复杂的操作,请将其存储在屏幕外位图中.只要背景可以在单个操作中绘制(比如说drawBitmap),性能不应该受到太大影响.