我正在使用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()的调用不会翻译翻译,而是翻译相对于前一个翻译。
我错过了什么吗?
答案 0 :(得分:0)
保存和恢复调用的顺序可能是错误的。应始终在恢复功能之前调用保存。你可以简单地做canvas.setTransform(1,0,0,1,0,0)。这会将变换矩阵重置为其原始形式,但保持其他上下文变量不变。
希望它有所帮助。