2012-10-29 50 views
0

在畫布上繪製位圖。我試圖讓這個位圖旋轉和改變位置。矩陣忽略位置或旋轉

對於使用此代碼,即時通訊:

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

而這一切是在一個循環,使變量「POS_X」將會增加。

但似乎矩陣不會接受這兩行,setTranslate和setRotate。 當我註釋掉setTranslate時,位圖被旋轉。當我註釋掉旋轉時,位圖正在移動。但他們不會一起工作!

我該怎麼辦?

謝謝!

回答

1

這個問題最有可能在單詞'set'的意思。

而不是設置aka覆蓋矩陣,應該增量調整它: 或者應該首先setTranslate然後旋轉,或setRotate然後轉換。

+0

如果庫沒有不帶前綴「設置」功能,那麼就可以有'matrixA.setRotate(); matrixB.setTranslate();'並將它們相乘以得到預期的結果。 –

+1

這種「Matrix.preRotate」和/或「Matrix.postRotate」有一些方法。 – harism

+0

如何乘以兩個矩陣? – Sebastian

1

對於即將成爲Google員工,

通過的setXXX開始矩陣命令將總是重置矩陣。所以如果你發送setRotate然後setTranslate,setRotate將被重置並且不適用。

幸運的是,你有其他的命令集:在preXXX和postXXX

所以,你可以做preRotate然後setTranslate達到你想要做什麼。

你甚至可以:

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