2012-05-26 104 views
6

好吧,也許我錯過了一些東西,但我堅持了幾個小時。我製作了一個應用程序,用戶在圖片上繪製尺寸線。現在我想繪製一些選擇點,顯示該行被選中。這些點是一個特定的位圖,必須位於該行的末尾(箭頭之後)並按箭頭旋轉。我創建了擴展視圖類DrawSelectionPoint,我可以用這樣的旋轉位圖:Android - 將位圖繪製到畫布上的特定位置

selectionPoint = BitmapFactory.decodeResource(context.getResources(), 
        R.drawable.selectionpoint); 
Matrix matrix = new Matrix(); 
     matrix.postRotate((float)Math.toDegrees(angle));   
canvas.drawBitmap(selectionPoint, matrix, null); 

(其中角是線的角度),這樣一來我的位圖旋轉我想要的方式,但它畫在點0,0(屏幕左上角)上。

如果我使用類似

canvas.save(); 

canvas.rotate(); 

canvas.drawBitmap(selectionPoint, x, y, null); 

canvas.restore(); 

然後我發現它太難戰平的確切位置我想該位圖(因爲我畫上一個旋轉畫布,我往回旋轉之後)。我嘗試了一些歐幾里得輪換轉換,但我沒有運氣。

是否有一些方法來應用矩陣旋轉,並給出我需要位圖繪製的點?先謝謝你!

回答

18

假設您想要繪製位圖的中心位於(px,py)畫布座標處的位圖。有一個成員變量

Matrix matrix = new Matrix(); 

,並在您的onDraw:

matrix.reset(); 
matrix.postTranslate(-bitmap.getWidth()/2, -bitmap.getHeight()/2); // Centers image 
matrix.postRotate(angle); 
matrix.postTranslate(px, py); 
canvas.drawBitmap(bitmap, matrix, null); 
+0

,似乎工作!非常感謝你! – george

+0

它不適合我,它與線條旋轉。 –