如何在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