2

ズームインして画像に何かを描画できるアプリケーションを作成しようとしています。次のリンクを使用して、画像の細かい ズーム機能を実行しているズーム可能な画像ビューを作成します

今の問題は、ズームアウトしたときにキャンバスに描いているものを画像サイズに拡大縮小して変換する方法がわからないことです。以下は onDraw() 関数です。私はリストに追加されたタッチポイントを記録しました。私のビューのこの onDraw() 関数では、それらのポイントを取得していますが、これらのポイントは screen に関連しています。画像操作に応じて変換およびスケーリングする必要があります(画像のズームイン/ズームアウトの場合)。

 protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

if(mMarkers!=null)
{
for(Marker m : mMarkers) {
    // draw the marker
     Log.v("IP","position"+ m.x+"    "+ m.y);
    Paint paint=new Paint();
    paint.setARGB(255, 2, 255, 2);
    canvas.drawText("O", m.x, m.y, paint);

    if(x!=-1){
         Log.v("IP","LINE"+x+"   " + y+ "  "+ m.x+"    "+ m.y);
    canvas.drawLine(x, y,m.x, m.y, paint);
    }
    x=m.x;
    y=m.y;
}
x=y=-1;

}

}

4

3 に答える 3

1

このコードを試してください

public boolean onTouchEvent(MotionEvent env) {
float x = env.getX() / mScaleFactor + rect.left;
float y = env.getY() / mScaleFactor + rect.top;
}
于 2013-07-15T12:48:14.963 に答える
0

相対 x、y および x と y のスケール係数を含むマトリックスから 9 ポイント配列を取得できます。これを使用して、現在のx,y(画面に対する) 元の画像の x、y に変換し、再度描画する前に再変換します。さまざまなズーム レベルで。

于 2012-10-29T08:08:29.883 に答える