编程语言
首页 > 编程语言> > 如何在Java中居中显示Graphics.drawString()?

如何在Java中居中显示Graphics.drawString()?

作者:互联网

我正在为我的Java游戏开发菜单系统,我想知道如何将Graphics.drawString()中的文本居中,这样如果我想绘制一个中心点位于X:50和Y的文本: 50,文本宽30像素,高10像素,文本将从X:35和Y:45开始.

在绘制文本之前,我可以确定文本的宽度吗?
然后这将很容易数学.

编辑:我也想知道我是否可以获得文本的高度,这样我也可以垂直居中.

任何帮助表示赞赏!

解决方法:

我在this question上使用了答案.

我使用的代码看起来像这样:

/**
 * Draw a String centered in the middle of a Rectangle.
 *
 * @param g The Graphics instance.
 * @param text The String to draw.
 * @param rect The Rectangle to center the text in.
 */
public void drawCenteredString(Graphics g, String text, Rectangle rect, Font font) {
    // Get the FontMetrics
    FontMetrics metrics = g.getFontMetrics(font);
    // Determine the X coordinate for the text
    int x = rect.x + (rect.width - metrics.stringWidth(text)) / 2;
    // Determine the Y coordinate for the text (note we add the ascent, as in java 2d 0 is top of the screen)
    int y = rect.y + ((rect.height - metrics.getHeight()) / 2) + metrics.getAscent();
    // Set the font
    g.setFont(font);
    // Draw the String
    g.drawString(text, x, y);
}

标签:graphics2d,java,text,centering,draw
来源: https://codeday.me/bug/20190928/1829484.html