绘图时如何分隔字符串中的字母
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"));
}
结果
我想绘制一个从 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"));
}
结果