2021/02/13 05:00
いろいろと調べていたら、簡単にできるんですね。
参考にさせていただいたページです。
【Java】アフィン変換で画像などを回転させる / のんぽぐさん
https://nompor.com/2017/12/08/post-1695/
----------
Graphics2D g2 = (Graphics2D) g;
AffineTransform at = g2.getTransform();
at.setToScale(scaleX, scaleY);
g2.setTransform(at);
----------
こんな簡単にできるんですね。知らなかった(笑)
paintメソッド内で、上記を考慮すれば、scaleX と scaleY (double型)の倍率でいけます。
いやいや。簡単だった(笑)(汗)
画像を拡大/縮小した時に、見た目のイメージを調整できるようです。
(2026/01/18追加)
1. 「パキッ!」としたドット絵を守る(Nearest Neighbor)
----------
// 補間をしない設定
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
----------
2. 「滑らか」に今風の質感を出す(Bilinear / Bicubic)
「高解像度のイラストや、写真をきれいに拡大・縮小したい場合はこちら」
----------
// 滑らかにする設定
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
----------
メリット: エッジが馴染み、ボヤけが自然になる。
デメリット: 補間計算が入るため、ごくわずかにCPU負荷が増える(が、現代のPCなら問題なし)。
3. 【エンジニアの作法】Transformの保存と復元
「拡大処理をすると、その後に描く文字なども全部大きくなってしまいます。描き終わったら元に戻すのがお作法です」
----------
// 1. 今の状態をメモ
AffineTransform old = g2.getTransform();
// 2. 拡大を設定して描画(ここで設定を上書き)
at.setToScale(scaleX, scaleY);
g2.setTransform(at);
/* ここで描画処理を行う */
// 3. 描き終わったらメモした状態に戻す
g2.setTransform(old);
----------
必要なインポート文:
java.awt.RenderingHints
java.awt.geom.AffineTransform
わたしのサイトのゲームは対応しています
ぜひとも大きな画面で体験してください♪
対応済みのゲーム
Javaでゲームを作ろう1- シューティングゲーム編 -
#Java2D #Graphics2D #拡大/縮小
