绘图时如何分隔字符串中的字母

How can I separate the letter in string when drawing

我想绘制一个从 jtextarea 中提取的字符串,但我想用 20px space 绘制每个字母,但我想我不能用 drawstring 做到这一点,我不能用drawchars每次画一个char,怎么办?

我想在每条痕迹上面写一个字母,但是我知道的方法不起作用

public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    for(int i=0;i<PalavraAdivinha.length();i++)
    {
        g.fillRect(InicioTraco+(i*40), 240, 40, 5);
    }
    Font titulo = new Font("Arial",Font.BOLD,40);
    g.setFont(titulo);
    g.drawString("Adivinhe a palavra", 0,100 );
    if(PalavraDigitada != null)
    {
        g.drawString(PalavraDigitada, InicioTraco, 235);
    }
}

您可以单独绘制每个字符。通过检索 Graphics 对象当前使用的 FontMetrics,您可以测量每个字符的宽度,因此您可以使用此宽度和给定的分隔符。

public static void drawString(Graphics g, String string, int x, int y,
        int seperation) {

    FontMetrics metrics = g.getFontMetrics();
    int drawx = x;

    for (int i = 0; i < string.length(); ++i) {
        String character = "" + string.charAt(i);

        g.drawString(character, drawx, y);
        drawx += seperation + metrics.stringWidth(character);
    }
}

示例代码

public static void main(String[] args) throws IOException {
    BufferedImage image = new BufferedImage(512, 256,
            BufferedImage.TYPE_INT_ARGB);
    Graphics g = image.getGraphics();
    g.setColor(Color.BLACK);
    for (int i = 0; i < 10; ++i)
        drawString(g, "i am drawn with seperation " + i, 24, 24 + 16 * i, i);
    ImageIO.write(image, "png", new File("output.png"));
}

结果