android canvas rotate 旋转的一些总结(旋转的一些注意点)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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度。

以上是关于android canvas rotate 旋转的一些总结(旋转的一些注意点)的主要内容,如果未能解决你的问题,请参考以下文章

canvas ctx.rotate()

canvas旋转

android如何旋转画布矩形

Android 中的 Matrix

贝塞尔曲线

canvas内image旋转