android canvas rotate 旋轉的一些總結(旋轉的一些注意點)


  在自定義控件和利用surfaceview時候利用serfaceHolder鎖定畫布畫圖做游戲的時候,在繪制tank的圖片的時候需要根據tank的方向來繪制,因此就用到canvas的rotate(float degrees)方法,試過很多次都導致屏幕上繪制的圖片都亂七八糟,不是按照想象的來的。經過了很多次的嘗試終於掌握了個規律:

  canvas在繪制的時候旋轉遵循:

  1、canvas.draw(bitmap , left , top , paint)中left 、 top始終是按照畫布的坐標來的,不管如何旋轉。

  2、當我們調用rotate(degrees)時,首先是將前面繪制的圖像顯示在屏幕上(此時屏幕顯示同canvas布局是一致的),然后旋轉畫布,按照canvas的坐標繪制后面的圖像。

  3、當我們再次調用rotate(degress)的時候,就將旋轉一次后面繪制的圖像顯示在窗口,(注意,因為屏幕旋轉過一次,因此屏幕顯示的第一次旋轉后的圖片相對屏幕是旋轉的,然后再一次旋轉)。

  4、依次循環,每一次旋轉畫布,系統就會將之前繪制的圖像繪制到屏幕,然后旋轉繼續后面的繪制。

  

node: 為了不致於屏幕的混亂,同opengl繪圖一樣,當我們在繪制自己旋轉后的圖像時候將canvas復原,即如果說你旋轉了15度,繪制完了你想繪制的圖片時就再次旋轉-15度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM