翻译后,Android Canvas恢复无法正常工作

时间:2014-08-19 12:09:06

标签: android canvas

我正在使用Canvas开发2D Android应用程序。我有几个屏幕,每个屏幕都有不同的坐标原点。为了实现这一点,我目前正在使用Canvas.translate(x,y)。当应用程序启动时,我调用canvas.save()来存储原始状态。当我移动到屏幕时,我需要重置画布翻译然后应用新的画布,因此新翻译相对于原始0,0。基本上在进入新屏幕时,我打电话:

canvas.restore();      //to undo the current translation
canvas.save();         //to save again the original state of canvas
canvas.translate(x, y) //to apply the needed translation

我在第一个屏幕上工作得很好,但是对于第二个屏幕,显然对restore()的调用不会翻译翻译,而是翻译相对于前一个翻译。

我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

保存和恢复调用的顺序可能是错误的。应始终在恢复功能之前调用保存。你可以简单地做canvas.setTransform(1,0,0,1,0,0)。这会将变换矩阵重置为其原始形式,但保持其他上下文变量不变。

希望它有所帮助。