AffineTransform
画像の回転を計算してくれる。

例:画像の中心で回転させたい場合
Graphics g; //グラフィック
Rectangle 矩形; //回転させたい画像の(x,y,幅,高)
double angle; //回転させたい角度
Image img; //描画したい画像

Graphics2D g2 = (Graphics2D)g;
AffineTransform beforeAffin = g2.getTransform();
AffineTransform affin = new AffineTransform();
affin.translate( 矩形.x, 矩形.y );
affin.scale( 1.0, 1.0 );
affin.rotate( Math.toRadians( angle ), 矩形.width / 2,矩形.height / 2 );
g2.transform( affin );
g2.drawImage( img, 0, 0, null );
g2.setTransform( beforeAffin );


  • グラフィックをグラフィック2Dに変換
Graphics2D g2 = (Graphics2D)g;
  • アフィン計算値をリセットする為の物
AffineTransform beforeAffin = g2.getTransform();
  • アフィントランフォームを生成
AffineTransform affin = new AffineTransform();
  • 画像の描画する位置(画像の左上が座標になります)
affin.translate( 矩形.x, 矩形.y );
  • 元画像の何倍の大きさにしますか(幅の倍率、高さの倍率)
※-1.0にすると逆さの画像になります。その際座標がズレるので調整を忘れないように
affin.scale( 1.0, 1.0 );
  • 画像の回転( ラジアン化(角度), 中心点x, 中心点y )
※中心点は、回転させる画像の中心の事。例では画像の中央で回転させている為、幅÷2と高÷2で設定してある。
affin.rotate( Math.toRadians( angle ), 矩形.width / 2,矩形.height / 2 );
  • グラフィックにアフィンを反映
g2.transform( affin );
  • 描画
g2.drawImage( img, 0, 0, null );
  • 反映したアフィンを取り除く為、最初につくったbeforeAffinをセット
g2.setTransform( beforeAffin );

タグ:

+ タグ編集
  • タグ:
最終更新:2012年02月10日 02:31