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 );
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