繁体   English   中英

矩阵忽略位置或旋转

[英]Matrix ignores position or rotation

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

为此我使用此代码:

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

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

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

我该怎么办?

谢谢!

最有可能的问题是“集合”这个词的含义。

我们应该逐步调整矩阵,而不是设置aka覆盖矩阵:首先是setTranslate然后是Rotate,还是setRotate然后是Translate。

对于未来的Google员工,

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

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

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

你甚至可以:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM