私の質問は、Java2Dでテキストを回転させる方法についてではありません。私はそれを行う方法を知っています。私が知らないのは、回転したテキストを「見栄えよくする」方法です。たとえば、PowerPointでテキストボックスを作成して回転させると、回転角度に関係なく、テキストは鮮明で鮮明に表示されます。ただし、で描画されたテキストg2D.drawString()
は、0度または90度では問題ないように見えますが、他の角度ではあまり良くありません。テキストを操作してきれいにしたり、シャープにしたりする方法はありますか?もしそうなら、誰かが私にこれを行う方法を学ぶためにどこを見ればよいかを教えてくれるなら、私はとても感謝するでしょう。
以下は私が話していることを説明する小さなプログラムです。大きいフォントは回転してもそれほど悪くはありませんが、それでもあまりプロフェッショナルに見えません。回転したときの小さいフォントはひどいです。
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
public class RotateTest extends JPanel {
String message = "How does this text look?";
public RotateTest() {
this.setPreferredSize(new Dimension(640, 280));
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2D = (Graphics2D) g;
g2D.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g2D.setFont(new Font("MyriadPro", Font.BOLD, 20));
g2D.drawString(message, 80, 20);
AffineTransform orig = g2D.getTransform();
double angle = Math.toRadians(7.0);
g2D.rotate(-angle, -10, 80);
g2D.drawString(message, 80, 80);
g2D.setTransform(orig);
angle = Math.toRadians(30.0);
g2D.rotate(-angle, -40, 80);
g2D.drawString(message, 60, 260);
g2D.setTransform(orig);
g2D.setFont(new Font("MyriadPro", Font.BOLD, 12));
g2D.drawString(message, 380, 20);
angle = Math.toRadians(7.0);
g2D.rotate(-angle, -10, 80);
g2D.drawString(message, 380, 120);
g2D.setTransform(orig);
angle = Math.toRadians(30.0);
g2D.rotate(-angle, -40, 80);
g2D.drawString(message, 320, 400);
g2D.setTransform(orig);
}
private void display() {
JFrame f = new JFrame("RotateTest");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(this);
f.pack();
f.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new RotateTest().display();
}
});
}
}