0

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

对于使用此代码的即时消息:

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

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

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

我该怎么办?

谢谢!

4

2 回答 2

1

问题很可能在于“集合”一词的含义。

与其设置 aka 覆盖矩阵,不如逐步调整它:要么先 setTranslate 然后 Rotate,要么 setRotate 然后 Translate。

于 2012-10-29T17:18:06.273 回答
1

对于未来的 Google 员工,

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

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

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

你甚至可以:

matrix.preRotate(90);
matrix.setTranslate(120,120);
matrix.postScale(2.0f);  
于 2014-04-04T14:04:52.940 回答