2010-09-27 113 views
0

我想用canvas.rotate旋转一个画布,并同时在上面移动一个对象。问题是,与旋转,画布的坐标系统旋转一样,所以我得到的,当我的对象应该是沿y轴移动的情况下,而Y轴位置上的x轴旋转。这是一团糟。有没有办法解决这个问题?如何旋转画布而不干扰Android中的坐标系?

回答

2

它使用矩阵数学;如果你以相反的顺序做事情(翻译然后旋转,反之亦然),你会得到相反的效果。

此外,使用SetMatrix(null)将矩阵清除为操作之间的身份;不知道这是你遇到麻烦的那种混乱。

+0

谢谢,我已经在每次转换之前和之后尝试过类似的东西 - canvas.save()和canvas.restore()。问题是,如果在平移或旋转后调用恢复,那么随后画出的所有对象都不会进行平移或旋转,因为画布的矩阵被清除。如果我不这么叫,第二个转换 - 翻译/旋转 - 就搞砸了。 从理论上讲,如果我能找到的翻译后,我的屏幕的中心,让我将它设置为支点的旋转,一切都应该工作。 – Kiril 2010-09-27 17:20:37

+0

如果你的对象可以保存在画布的坐标系中,那么你就不会有这个问题。然后,您可能需要在将用户输入应用到画布上的对象位置之前进行旋转。如果你有更多关于你想要做什么的信息,那可能会有帮助。 – SomeCallMeTim 2010-09-29 20:02:13

+0

我也有问题,当我旋转画布它移动的所有对象,而我想旋转画布上单一动画对象:( – 2011-05-25 09:51:43