上述类有以下方法:
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。
那么推理中的错误在哪里?
答案 0 :(得分:0)
它们使用相同的比例缩放,而不是绝对大小。为了回答你的问题,使用位图作为参考绘制画布 - 想象它就像画家和画布一样,使用两张照片图像作为参考在另一张图像上面绘制。