[Android]Matrix.setTranslate
Matrix.setTranslateの怪しい動きに悩まされました。
画像をズームして、表示位置を変えるというような単純なコードですが
「setTranslate」を使用すると、直前の「postScale」で設定した値が無効になってしまいました。
setTranslateって、MTRANS_XとMTRANS_Yの値を変更するだけかと思っていたのですが・・
こんな仕様なのでしょうか。
仕方ないので以下のような感じで回避しました。
public void zoom(ImageView iv, Matrix m){
m.postScale(2.0f, 2.0f);
m.setTranslate(0.0f, 0.0f);
iv.setImageMatrix(m);
}
画像をズームして、表示位置を変えるというような単純なコードですが
「setTranslate」を使用すると、直前の「postScale」で設定した値が無効になってしまいました。
setTranslateって、MTRANS_XとMTRANS_Yの値を変更するだけかと思っていたのですが・・
こんな仕様なのでしょうか。
仕方ないので以下のような感じで回避しました。
public void zoom(ImageView iv, Matrix m){
m.postScale(2.0f, 2.0f);
float[] v = new float[9];
m.getValues(v);
v[Matrix.MTRANS_X] = 0.0f;
v[Matrix.MTRANS_Y] = 0.0f;
m.setValues(v);
iv.setImageMatrix(m);
}
コメントの投稿
No title
postTranslate 使えばいいんじゃない?
Re: No title
コメントありがとうございます。
結構時間たっちゃったので記憶が定かではないですが、[0, 0]の位置に動かしたかったんだと思います。
postTranslateはその場所からの移動量を指定するものだったと思うので。
でも今考えると、postScale、setTranslateの順序を変えるだけで良かったんじゃないかと思いました・・
結構時間たっちゃったので記憶が定かではないですが、[0, 0]の位置に動かしたかったんだと思います。
postTranslateはその場所からの移動量を指定するものだったと思うので。
でも今考えると、postScale、setTranslateの順序を変えるだけで良かったんじゃないかと思いました・・


