2011年02月25日
ImageViewなMatrix〜続き(2)
ImageViewで表示されている画像の座標を探っていたのだが結局Matrixから取得しようかと(^^;)
そこでImageViewからgetImageMatrixでMatrixを取得して
そのMatrixからgetValuesでfloat配列をゲットする
float[] values = new float[9];
mtx.getValues(values);
上記みたいな感じですね
配列の返り値は
int MPERSP_0 配列[6]
int MPERSP_1 配列[7]
int MPERSP_2 配列[8]
int MSCALE_X 配列[0]
int MSCALE_Y 配列[4]
int MSKEW_X 配列[1]
int MSKEW_Y 配列[3]
int MTRANS_X 配列[2]
int MTRANS_Y 配列[5]
配列の順番がバラバラな様だがぁw
照会する値はMSCALE_X、Y と MTRANS_X、Y
MSCALE_X、Yはスケールなので、そのまんまズーム率ですね。
MTRANS_X、Yは画像の左上が移動している値なのだが
ちと曲者っぽい
実際の値を見ると移動した値にスケールを掛けてる様だ。
なのでスケールが1.0fの時に100x150移動してる場合
スケールが2.0fの時には
MTRANS_X、Yに200、300の返り値が入っている。
だから画像の座標を取ろうと思うと
(MTRANS_X、Y + (画面座標XY - ImageView XY)) / MSCALE_X、Y
となりますかな。
でもXMLでフレームにImageViewが入っていると
getTopやgetLeftが変な感じなので少し考えてみるかぁ〜
投稿者:秀at 01:32| さんでープログラム(Android編) | コメント(0) | トラックバック(0)