我目前正在为我的 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);
}
关于java - 如何在 Java 中居中 Graphics.drawString()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27706197/