0

重複の可能性:
Javaでテキストのサイズを変更する方法

Javaでテキストを水平に引き伸ばすことは可能ですか. 私はそれがそこにあるはずだと知っていますが、私はそれを理解することができません。フォント サイズは、テキストの高さと幅の両方に影響します。FontMetrics を試してみましたが、テキストの幅しかわかりません。しかし、テキストの幅だけを変更して、引き伸ばされているように見えるようにする必要があります。

誰かがこれを行うことを知っている場合は、私に知らせてください。前もって感謝します。

4

1 に答える 1

4

テキストを形状に変換して を使用するなど、これと同じ結果を達成する方法はおそらく他にもありますがAffineTransformation、これが手元にあるものです...

ここに画像の説明を入力

public class StretchText {

    public static void main(String[] args) {
        new StretchText();
    }

    public StretchText() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Test");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new TestPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        private BufferedImage imgTet;

        public TestPane() {
            Font font = UIManager.getFont("Label.font");
            FontMetrics fm = getFontMetrics(font);
            String text = "This is a test";
            int width = fm.stringWidth(text);
            int height = fm.getHeight();
            imgTet = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
            Graphics2D g2d = imgTet.createGraphics();
            g2d.setColor(Color.BLACK);
            g2d.drawString(text, 0, fm.getAscent());
            g2d.dispose();
        }

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(200, 200);
        }

        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D) g;
            g2d.drawImage(imgTet, 0, 0, getWidth(), imgTet.getHeight(), this);
            g2d.dispose();
        }

    }

}
于 2013-02-03T08:49:13.880 に答える