0

我希望通过子类化 MyLocationOverlay 在 MapView 上绘制我自己的指南针图像。自定义图像需要大于 MyLocationOverlay 显示的默认图像。我覆盖 drawCompass 并使用我自己的可绘制对象(位图)来绘制指南针:

@Override
protected void drawCompass(Canvas canvas, float bearing) {

    Rect bounds = canvas.getClipBounds();
    // usual result: bottom=98, left=10, right=90, top=18

    // draw something custom here...

    // Don't want default compass image:        
    //super.drawCompass(canvas, bearing);

}

如何设置自定义图像的边界,以便调用 drawCompass 在画布对象上设置所需的边界?看来我得到的界限是那些适用于默认图像的界限。

(drawCompass 似乎是从 MyLocationOverlay.draw() 调用的 - 我可以覆盖它,但我仍然不确定如何更改画布对象上的 ClipBounds。)

4

1 回答 1

0

你的问题让我意识到你描述的剪裁问题导致了我的自定义指南针绘制的奇怪方式。我在这里找到了答案:

http://jtomlinson.blogspot.com/2008/10/clipping.html

你需要使用

   canvas.clipRect(0, 0, newWidth, newHeight, Region.Op.REPLACE);

(要使用它,您需要import android.graphics.Region.

于 2012-03-24T02:57:53.790 回答