我在画布上绘制一个位图。我试图让这个位图旋转并改变位置。
对于即时通讯使用此代码:
matrix.setTranslate(pos_x, 15);
matrix.setRotate(30);
canvas.drawBitmap(bitmap, matrix,paint);
所有这一切都在循环中,因此变量“pos_x”将会增加。
但似乎矩阵不会接受这两行,setTranslate和setRotate。 当我注释掉setTranslate时,位图会旋转。当我注释掉旋转时,位图正在移动。但他们不会一起工作!
我该怎么办?
谢谢!
答案 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);