矩阵忽略位置或旋转

时间:2012-10-29 17:11:40

标签: java android bitmap surfaceview android-canvas

我在画布上绘制一个位图。我试图让这个位图旋转并改变位置。

对于即时通讯使用此代码:

 matrix.setTranslate(pos_x, 15);
 matrix.setRotate(30);
 canvas.drawBitmap(bitmap, matrix,paint);

所有这一切都在循环中,因此变量“pos_x”将会增加。

但似乎矩阵不会接受这两行,setTranslate和setRotate。 当我注释掉setTranslate时,位图会旋转。当我注释掉旋转时,位图正在移动。但他们不会一起工作!

我该怎么办?

谢谢!

2 个答案:

答案 0 :(得分:1)

最有可能的问题是'set'这个词的含义。

不是设置aka覆盖矩阵,而是应该逐步调整它: 要么应该首先设置TransTranslate然后再旋转,要么setRotate然后翻译。

答案 1 :(得分:1)

对于未来的Google员工,

以setXXX开头的矩阵命令将始终重置矩阵。因此,如果您发送setRotate然后发送setTranslate,则setRotate将被重置并且不会应用。

幸运的是,您必须使用其他命令集:preXXX和postXXX

所以你可以做preRotate然后setTranslate来实现你想做的事。

你甚至可以:

matrix.preRotate(90);
matrix.setTranslate(120,120);
matrix.postScale(2.0f);