2012-01-25 18 views
2

すべて、私は画像にピンチとズームのスケーリングを実装するためにImageViewを拡張しました。これは、行列を修正し、それを画像に適用することによって行われます。今、onDraw()を上書きしてプリミティブ(つまり、長方形や円)を描画しています。キャンバスに行列を適用したところ、スケーリングは適切に処理されているようですが、唯一の問題は描画されたアイテムの位置がずれていることです。新しい尺度を反映するために描画されたアイテムの位置をどのように翻訳するのですか?アンドロイド:ImageViewとそのonDraw()アイテムのスケーリング

答えて

1

マトリックスがない場合、ピンチとズームをonDrawメソッドで直接実装することができます。このブログの投稿を確認してください:http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html

@Override 
public void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 

    canvas.save(); 
    canvas.translate(mPosX, mPosY); 
    mIcon.draw(canvas); 
    canvas.restore(); 
} 
+0

実際にうまくいきました。しかし、翻訳やスケーリングが完了すると、プリミティブのタッチをキャッチするための私のタッチコードはもう働きません。 onTouch(MotionEvent)の値を変換して現在のキャンバス上のオンに一致させる方法はありますか? – serveace6

+0

翻訳後のオブジェクトの位置を計算する必要があります。 – ovonel

+0

私はタッチイベントの位置をオフセットで引いて位置を変換することができましたが、スケールを因数分解するためのアイデアはありますか? – serveace6

関連する問題