如何在Java 2D中绘制垂直文本?

要垂直绘制文本/字符串,我们需要对Graphics2D对象进行转换。首先,创建方法的实例AffineTransform并使用setToRotation()方法设置旋转角度。然后将此转换对象传递给g2.setTransform()方法。

package org.nhooo.example.geom;

import javax.swing.*;
import java.awt.*;
import java.awt.geom.AffineTransform;

public class DrawVerticalText extends JPanel {
    @Override
    public void paint(Graphics g) {
        Graphics2D g2 = (Graphics2D) g;

        // 定义渲染提示,字体名称,字体样式和字体大小
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        g2.setFont(new Font("Segoe Script", Font.BOLD, 22));
        g2.setColor(Color.RED);

        // 旋转90度以制作垂直文字
        AffineTransform at = new AffineTransform();
        at.setToRotation(Math.toRadians(90), 80, 100);
        g2.setTransform(at);
        g2.drawString("This is a vertical text", 10, 10);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setTitle("Draw Vertical Text Demo");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.add(new DrawVerticalText());
        frame.pack();
        frame.setSize(420, 350);
        frame.setVisible(true);
    }
}

运行该代码段,您将看到以下屏幕:

image.png