2011-03-19 75 views
7

在我的Android應用程序中,我加載了一張圖片。使用此圖片,用戶可以放大,縮小和來回移動它。目前,我一次只能得到一個工作。使用setScale和setTranslate(Matrix)

經過大量測試後,我確定無論我稱之爲第二者,它都是可行的。

matrix.setScale(zoom, zoom); // this will not work 
matrix.setTranslate(currentX, currentY); // this will work 
canvas.drawBitmap(image, matrix, null); 

如果我運行所有相同的代碼,但只是簡單地切換setScale秒,它將工作,但setTranslate將不會。

這看起來應該是一個簡單的答案。 順便說一句:我的代碼使用後設置的方式將不實際。

matrix.postScale(); 
matrix.postTranslate(); 

在此先感謝

回答

18

當你調用任何一組*()方法替換矩陣的全部內容。在你的第一個例子中,只考慮了setTranslate()。您需要使用pre *()和post *()方法來組合翻譯和縮放操作。

+1

啊,我有一種感覺,它被重置。雖然它被重新設置很奇怪,但似乎它會重新設置'set'的含義。謝謝 – Paramount 2011-03-19 16:11:18

0

響應代碼羅曼

matrix.setScale(zoom, zoom); // this will not work 
matrix.postTranslate(currentX, currentY); // this will work 
canvas.drawBitmap(image, matrix, null);