假设我想使用java.awt.Graphics.drawString(String str, int x, int y)
方法在某些特定坐标处绘制字符串,例如(300,300)。但是,drawString()
方法将始终将字符串的左下角放置在那些坐标处,而不是我想要的左上角。
在指定坐标处绘制字符串左上角的简单方法是什么?我知道java.awt.FontMetrics
实用程序类,但是很确定它是否会有所帮助。
最佳答案
FontMetrics是要使用的类:
public static int getStringAscent(Graphics page, Font f, String s) {
// Find the size of string s in the font of the Graphics context "page"
FontMetrics fm = page.getFontMetrics(f);
return fm.getAscent();
}
上升是给定琴弦从基线升起的最大高度字形。基线的起点是drawString方法的参考点,因此,上升是必须调整坐标的距离。如果使用此方法使用Graphics2D g绘制字符串:
g.drawString(msg, x, y);
您可以将其按字体f的上升高度向下移动:
Font small = new Font("Helvetica", Font.BOLD, 24);
FontMetrics metrics = getFontMetrics(small);
int d = metrics.getAscent();
g.drawString(msg, x, y + d );