matrixを使って、回転をさせる時に中心点をずらす方法

Matrixを利用して、対象の画像を回転させようとすると、

Matrix mtx = new Matriix();
mtx.postRotate(r);

画像の左上を中心に回転してしまって、思い通りに書いてしません。

そんな場合には、画像のサイズを横幅w、縦幅hとするとき

mtx.postTranslate(-w/2,-h/2);
mtx.postRotate(r);

とすると、中心点が思ったとおりの位置で回転ができます。

だけど、これだと、画像が左上によってしまうので、修正をして、

mtx.postTranslate(-w/2,-h/2);
mtx.postRotate(r);
mtx.postTranslate(w/2,h/2);

な感じにしてあげると、画像の中心で回転したように利用する事ができます。

結構カンタンです。ここから画像の位置を更に変更する事も可能なのですが、

postTranslate

setTranslate

でいろいろなところで、使われる事もあるので補足として覚えておきたいのですが、

postの方は現在かかっている変更に追加で変更を加えます。一方でsetの方は現在かかっている変更をリセットしてあらたに変更をする場合に利用します。

ここがあいまいだと何度やってもうまくできないのでご注意ください!!

 

前後の記事

前の記事:

次の記事:

関連の記事

コメントの投稿

  • サイト内検索

新作アプリの紹介

関連サイトの紹介

アンドロイドアプリ開発TIPS
きぐるみカメラ
ふらいぱん
アンドロイドのデザイン集
Page top↑