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 に答える