2012-06-30 24 views
0

所提到的類得到了下面的方法:安卓:MyLocationOverlay.java - >瞭解問題

protected void drawCompass(Canvas canvas, float bearing) { 
    int offset = Math.max(canvas.getHeight(), canvas.getWidth())/8; 
    Rect r = new Rect(0, 0, 2*offset, 2*offset); 
    canvas.drawBitmap(compassBase, null, r, paint); 
    canvas.rotate(-bearing, offset, offset); 
    canvas.drawBitmap(compassArrow, null, r, paint); 
} 

鏈接到完整的源:MyLocationOverlay

在那裏,他們創建一個矩形[R巫指定了兩個位圖應繪製在畫布上。

drawBitmap的java的醫生說:「畫指定的位圖,縮放/自動轉換,填補了目標矩形如果源矩形不爲空,它指定位圖繪製的子集。」

因爲兩個Bitmaps使用相同的Rect r,並且它們都自動縮放以適合Rect,所以當我在MapView中激活指南針時,結果爲什麼會是完美的Compass。

在我看來,結果應該是廢話,因爲指南針的箭頭也縮放以適合Rect。

那麼推理中的錯誤在哪裏?

回答

0

它們使用相同比例縮放,而不是絕對大小。爲了回答你的問題,使用位圖作爲參考繪製畫布 - 將它想象爲畫家和畫布,使用兩個照片圖像作爲參考,將一個圖像放在另一個的頂部。