0

提到的类有以下方法:

   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 女巫指定两个位图应该在画布上绘制的位置。

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

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

在我看来,结果应该是废话,因为指南针的箭头也被缩放以适合矩形。

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

4

1 回答 1

0

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

于 2012-06-30T22:02:43.110 回答