Android画布旋转:需要旋转* x *度而不是*到* x度

时间:2011-05-18 23:12:53

标签: android rotation android-canvas

Canvas中旋转方法的文档声明degrees参数是“以度为单位的旋转量”。但是,根据我的经验,这是误导。例如,如果我的位图处于规范直立方向(即theta = 0,即12点)时调用rotate(45),则位图会相对于0尽职地旋转45度。如果我再拨打第二个电话旋转(45),图像不[似乎]移动。如果我然后调用旋转(-45),则位图不会返回到其原始方向,而是相对于0旋转-45度。换句话说,度数参数是绝对的(“旋转到45度” ),而不是文件所暗示的相对(“旋转45度”)。这正是我不想要的。

从给定的方向,我希望能够旋转我的位图 BY +/- x度,其中+当然是顺时针旋转。我认为,假设这种方法的一种方法是,为了下一次旋转的目的,无论我在哪里旋转到“新0”(即它有效地占据12:00)。我的问题是:我该怎么做,或者,有没有更好的方法来实现我的目标?

非常感谢。

2 个答案:

答案 0 :(得分:2)

一种简单的方法是将最后一次旋转存储为变量,并将+/-下一次旋转存储到它 - 当然,你不要超过360。

答案 1 :(得分:1)

我认为canvas.setMatrix(canvas.getMatrix())将“保存”您所做的所有更改,从而在您旋转“新0”的任何地方制作。但是dbryson的建议对于你提到的目的来说是经济的。