如何在Java中居中显示Graphics.drawString()? [英] How can I center Graphics.drawString() in Java?
问题描述
我正在研究 Java 游戏的菜单系统,我想知道如何将文本置于 Graphics.drawString()$ c $的中心位置c>,如果我想绘制一个中心点在
X:50
和 Y:50
的文本,文本 30
像素宽, 10
像素高,文本将从开始X:35
和 Y:45
。
I'm currently working on the menu system for my Java game, and I wonder how I can center the text from Graphics.drawString()
, so that if I want to draw a text whose center point is at X: 50
and Y: 50
, and the text is 30
pixels wide and 10
pixels tall, the text will start at X: 35
and Y: 45
.
我可以确定宽度在我画画之前的文字?
然后这将很容易数学。
Can I determine the width of the text before I draw it?
Then it would be easy maths.
编辑:我也想知道我是否可以得到文本的高度,这样我也可以垂直居中。
I also wonder if I can get the height of the text, so that I can center it vertically too.
感谢任何帮助!
推荐答案
我在这个问题。
我使用的代码看起来像这样:
The code I used looks something like this:
/**
* 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中居中显示Graphics.drawString()?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!