3

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

从给定的方向,我希望能够将我的位图旋转+/- x 度,其中 + 当然是顺时针旋转。我想,伪造这个的一种方法是在我旋转到“新 0”(即它实际上占据 12:00)的任何地方进行下一次旋转。我的问题是:我该怎么做,或者,有没有更好的方法来完成我想要的?

非常感谢。

4

2 回答 2

2

一种简单的方法是将最后一个旋转存储为一个变量,并对其进行 +/- 下一个旋转 - 当然你不会超过 360 度。

于 2011-05-18T23:16:46.167 回答
1

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

于 2011-05-18T23:21:09.307 回答