Android:MyLocationOverlay.java - >了解问题

时间:2012-06-30 21:52:36

标签: android android-mapview mylocationoverlay

上述类有以下方法:

   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);
}

链接到完整的src:MyLocationOverlay

在那里他们创建了一个Rect r witch指定应该在画布上绘制两个位图的位置。

drawBitmap的java文档说:“绘制指定的位图,自动缩放/平移以填充目标矩形。如果源矩形不为null,则指定要绘制的位图的子集。”

因为两个位图都使用相同的Rect r,并且因为它们都被自动缩放以适合Rect,所以当我在MapView中激活指南针时,为什么结果是完美的Compass。

在我看来,结果应该是垃圾,因为指南针的箭头也会缩放以适合Rect。

那么推理中的错误在哪里?

1 个答案:

答案 0 :(得分:0)

它们使用相同的比例缩放,而不是绝对大小。为了回答你的问题,使用位图作为参考绘制画布 - 想象它就像画家和画布一样,使用两张照片图像作为参考在另一张图像上面绘制。