2012-02-14 10 views
4

画像があり、画像マップとして使用しています。画像が固定されていれば問題はありませんが、この画像をズームしてドラッグし、画像がクリックされた場所の座標を取得して使用する必要があります。ピンチ、ドラッグ、ズームで画像を移動してサイズを変更した場合、画像のどこに触れたかを知るには

この画像がどれだけ移動してサイズが変更されたかを追跡する必要がありますか、または画像の左上隅の0x0ポイントを取得できますか?

それを私は、この優れたチュートリアルの私のイメージ操作をベースとしまし追加する必要があります

を行うための別の方法がありますhttp://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2/1747?tag=rbxccnbzd1

答えて

2

あなたがに適用されているのと同じ変換行列を使用してポイントを得ることができます画像。画面の座標系と画像の座標系の間の点を元の行列の効果を逆にして変換する必要があります。

具体的には、画像を画面に変換するために使用された逆行列を使用して、ユーザーが画面上でクリックしたx座標とy座標を元の画像の対応する点に変換します。 行列を想定した擬似コードの

ビットは、画像に適用された変換が含まれています:変換がどのように動作するかに私の洞察力のビットを与えている

// pretend user clicked the screen at {20.0, 15.0} 
float x = 20.0; 
float y = 15.0; 

float[] pts[2]; 

pts[0] = x; 
pts[1] = y; 

// get the inverse of the transformation matrix 
// (a matrix that transforms back from destination to source) 
Matrix inverse = new Matrix(); 
if(matrix.invert(inverse)) { 

    // apply the inverse transformation to the points 
    inverse.mapPoints(pts); 

    // now pts[0] is x relative to image left 
    //  pts[1] is y relative to image top 
} 
+0

おかげローンは、私はこれをあげます前 – Martin

関連する問題