2012-08-25 63 views
1

好吧,我有一個方法,它接受變量:image,int x,int y,float angle。Android - 無法使用矩陣在座標上繪製圖像

我正在使用畫布,而我正在使用一個Matrix transform = new Matrix();來旋轉圖像的中心。不過,我希望圖像在座標xy處繪製。出於某種原因,我用過的所有不同的方法都沒有奏效。有時它會在0,0處繪製它,甚至不會顯示在屏幕上。

這裏是我的僞代碼:

//pseudo-code: img_width, img_height 
public void drawImage(Bitmap img, int x, int y, float angle) 
{ 
    transform.setTranslate(x, y); 
    transform.setRotate(angle, img_width/2, img_height/2); 
    canvas.drawBitmap(img, transform, null); 
} 

我已經得到了旋轉的圖像,但我希望圖像在指定的座標繪製:X,Y。

我試過交換所有的變量,使用transform.preRotate,基本上花了1小時試圖找出爲什麼沒有工作。我有很多其他圖像被繪製到畫布上,並且它們出現在他們應該在的位置,但是當我想旋轉時,它不會在指定的座標上繪製。

我已閱讀了5個與此相關的SO問題和答案,但沒有給我我需要的東西。

我真的很需要一個答案和代碼,謝謝。

回答

0

也許你會想要寫:

public void drawImage(Bitmap img, int x, int y, float angle) 
{ 
    transform.setRotate(angle, img_width/2, img_height/2); 
    transform.postTranslate(x, y); 
    canvas.drawBitmap(img, transform, null); 
} 

如果旋轉平移前的圖像時,圖像也不會在那裏你指望它去...

+0

當我這樣做,圖像不旋轉。它看起來應該在哪裏,但不旋轉。 – JRunner

+0

你說得對,我編輯了我的解決方案。 –

+0

使用postTranslate而不是setTranslate,它將翻譯「添加」到旋轉矩陣... –