• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:AffineTransformOpで画像を反転する
#navi(../)
RIGHT:Posted by [[terai]] at 2010-01-12
*AffineTransformOpで画像を反転する [#h980f264]
AffineTransformOpなどを使って、画像の上下反転、左右反転などを行います。
RIGHT:Posted by [[terai]] at 2010-01-11
*AffineTransformOpで画像を反転する [#j7db4b3d]
AffineTransformOpなどを使って、画像の上下反転、左右反転を行います。

-&jnlp;
-&jar;
-&zip;

#screenshot

**サンプルコード [#yf8dbae5]
#code{{
int w = bi.getWidth(this);
int h = bi.getHeight(this);
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);
}}

**解説 [#pb25b986]
上記のサンプルでは、JMenuBarに画像を描画し、これに追加するJMenuを通常は透明、選択されたときなどは不透明となるようにsetOpaqueメソッドで切り替えています。
上記のサンプルでは、AffineTransformOp#filter(...)メソッドで左右反転したBufferedImageを生成しています。

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

以下のような方法で上下反転することもできます。
#code{{
AffineTransform at = AffineTransform.getScaleInstance(1.0, -1.0);
at.translate(0, -h);
g2.drawImage(bi, at, this);
}}

**参考リンク [#m98de6d0]
-[[Shapeの反転>Swing/HorizontalFlip]]

**コメント [#k216642b]
#comment