TITLE:AffineTransformOpで画像を反転する

Posted by terai at 2010-01-12

AffineTransformOpで画像を反転する

AffineTransformOpなどを使って、画像の上下反転、左右反転などを行います。

  • &jnlp;
  • &jar;
  • &zip;

#screenshot

サンプルコード

AffineTransform at = AffineTransform.getScaleInstance(-1.0, 1.0);
at.translate(-w, 0);
AffineTransformOp atOp = new AffineTransformOp(at, null);
g.drawImage(atOp.filter(bi, null), 0, 0, w, h, this);

解説

上記のサンプルでは、JMenuBarに画像を描画し、これに追加するJMenuを通常は透明、選択されたときなどは不透明となるようにsetOpaqueメソッドで切り替えています。

AffineTransformOp#filterメソッドで左右反転したBufferedImageを生成して表示しています。

以下のような方法で上下反転することもできます。

AffineTransform at = AffineTransform.getScaleInstance(1.0, -1.0);
at.translate(0, -h);
g2.drawImage(bi, at, this);

参考リンク

コメント