2012-08-07 10 views
7

私は、キャンバスにビットマップを描画してスケーリングしたいと思っています。私はキャンバスをスケーリングすることができますが、その上に描画されたビットマップはそれぞれ左下に移動します。スケーリングキャンバスと保持センター

@Override 
protected void onDraw(Canvas canvas) { 
    canvas.translate(mPosX, mPosY); 
    canvas.scale(mScaleFactor, mScaleFactor); 

    //draw bitmap 
} 

最後の数日間は、変換座標を操作してスケーリングするためのさまざまなアプローチを試みました。しかし、何も私のために働いた。私はかなり私の問題のための簡単な解決策がなければならないと確信しています。

canvas.scale(2,2, redCircle.x, redCircle.y); 

が動作します:あなたが言及したのように、事前

+0

ビットマップを正確にどのように拡大しますか?これはどういう意味ですか?「それに描かれたビットマップは、それぞれ左下に移動します。 – you786

+0

画面の中央に赤い円が表示されます。ズームインすると、画面の中央に大きな赤い円が表示されます。今、画面の右下隅に大きな赤い円が表示されます。 –

答えて

13

おかげで、ピボットポイントは、これを行うには正しい方法です。余分な翻訳の必要はありません。

+0

赤い円は一例にすぎません。実際、キャンバスには多くの異なるビットマップが描かれています。画面の中央に何がズームされたかったのですか? –

+0

次に、ピボットポイントが画面の中心になるようにします。既に試したことがある場合は、centerXとcenterYに間違った値を使用しているに違いありません。 – you786

+0

これで、画面の中央にズームできます。しかし、キャンバスをスクロールすると、実際には遅くなります。canvas.scale(mScaleFactor、mScaleFactor、getWidth()/ 2、getHeight()/ 2); \t \t \t canvas.translate(mPosX、mPosY); ' –