繁体   English   中英

字体-如何定位字符串的左上角?

[英]Fonts - How to position top-left corner of a string?

假设我要使用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 );

尝试这个:

FontMetrics metric = g.getFontMetrics(g.getFont());
g.drawString(str, x, y + metric.getAscent() - metric.getDescent() - metric.getLeading());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM