【Java】アンチエイリアシングの利用
本稿ではJavaのGraphics2Dクラスを利用したアンチエイリアシングを実装する方法を紹介します。
アンチエイリアシングを使用すると見え方がじらじらせず、滑らかに見えるようになります。
setRenderlingHintメソッド
アンチエイリアシングを利用するにはsetRenderlingHintメソッドを使用します。
1個目の引数にはRenderlingHintsクラスの定数KEY_ANTIALIASINGやKEY_TEXT_ANTIALIASINGを利用します。
2個目の引数もRenderlingHintsクラスの定数VALUE_ANTIALIAS_ONやVALUE_TEXT_ANTIALIAS_ONを利用します。
無効化したい場合はRenderlingHintsクラスの定数VALUE_ANTIALIAS_OFFやVALUE_TEXT_ANTIALIAS_OFFを利用しましょう。
それぞれ図形や線のアンチエイリアシングの設定、文字描画時のアンチエイリアシングの設定とで別れています。
それでは実際にサンプルを実行して比較してみましょう。
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test{
public static void main(String[] args) {
GameWindow gw = new GameWindow("テストウィンドウ",400,300);
DrawCanvas dc = new DrawCanvas();
gw.add(dc);
gw.setVisible(true);
}
}
class GameWindow extends JFrame{
public GameWindow(String title, int width, int height) {
super(title);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(width,height);
setLocationRelativeTo(null);
setResizable(false);
}
}
class DrawCanvas extends JPanel{
public void paintComponent(Graphics g) {
super.paintComponent(g);
//フォント
Font f = g.getFont();
Font f2 = new Font("HGP創英角ポップ体", Font.BOLD, 25);
//アンチエイリアシングなしで描画
g.drawOval(50, 150, 50, 50);
g.drawString("テキスト", 50, 50);
g.setFont(f2);
g.drawString("選択", 50, 100);
g.setFont(f);
Graphics2D g2 = (Graphics2D)g;
//図形や線のアンチエイリアシングの有効化
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
//文字描画のアンチエイリアシングの有効化
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
//アンチエイリアシングありで描画
g.drawOval(200, 150, 50, 50);
g.drawString("テキスト", 200, 50);
g.setFont(f2);
g.drawString("選択", 200, 100);
}
}

やっぱ滑らかに見えたほうがきれいです。
ただしアンチエイリアシングは処理速度が若干遅くなることも考慮しておきましょう。
私は文字のアンチエイリアシングは基本かけるようにしています。









ディスカッション
コメント一覧
It’s going to be ending of mine day, except before end I am reading this wonderful post to improve my experience.
Thank you for comment.
Having read this I thought it was rather informative.
I appreciate you taking the time and energy
to put this article together. I once again find myself spending way too much time
both reading and commenting. But so what, it was still worthwhile!
Thank you for comment.
Thanks on your marvelous posting! I truly enjoyed reading it, you’re a great
author.I will always bookmark your blog and will often come back at some point.
I want to encourage you continue your great posts, have a nice evening!
my page; 롤강의
Thank you for your comment.
It will be encouraging!
ピンバック & トラックバック一覧
[…] 【Java】アンチエイリアシングの利用 | のんぽぐ […]