2011-05-18 49 views
3

Canvas中旋轉方法的文檔指出度數參數是「要旋轉的量(度)」。然而,根據我的經驗,這是誤導。例如,如果當我的位圖處於垂直方向(即θ= 0,即12:00)時我調用旋轉(45),則位圖相對於0忠實地旋轉45度。如果我再次調用要旋轉(45),圖像不會[移動]。如果我然後調用旋轉(-45),則位圖不會返回到其原始方向,而是相對於0旋轉-45度。換句話說,度參數是絕對的(「旋轉到45度」 ),而不是相對的(「旋轉45度」),如文件所暗示的。這正是我不想要的。Android帆布旋轉:需要旋轉* x *度不* x *度

從給定的方向,我希望能夠旋轉我的位圖BY +/- x度,其中+當然是順時針旋轉。假設這種假設的一種方法是,無論我旋轉到「新的0」(即它實際上佔用了12點),以用於下一次旋轉的目的。我的問題是:我該怎麼做,或者,有沒有更好的方法來實現我想要的?

非常感謝。

回答

2

一個簡單的方法是將存儲最後的旋轉作爲變量和+/-旁邊轉動它 - 看着你當然不超越360

+0

你可以檢查上限與一個簡單的模數360運算符;) – Eric 2011-05-18 23:23:28

+0

@eric - 是的非常好。沒想到這一點。 – dbryson 2011-05-18 23:27:16

+0

@dbryson:是的,這就是我現在做的一種破解。問題是我可能必須超過+/- 360. – Urthas 2011-05-18 23:42:52

1

我認爲canvas.setMatrix(canvas.getMatrix())會「拯救」的全部您所做的更改可以讓您在任何地方旋轉'新0'。但是dbryson的建議對於你提到的目的來說是經濟的。

+0

這是非常有趣的,我將不得不玩。在經過dbryson&co的緩存輪轉攻擊幾個小時後,我仍然很努力地投入到接近+ -360的情況下,然後超越。要麼我會弄清楚,否則我會認爲它比絕對需要更復雜。謝謝大家的幫助 – Urthas 2011-05-19 02:46:22