提到的类有以下方法:
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 中激活指南针时,为什么结果是完美的指南针。
在我看来,结果应该是废话,因为指南针的箭头也被缩放以适合矩形。
那么推理的错误在哪里呢?