如何计算字体的宽度?

我正在使用Java绘制一些文本,但是对我来说很难计算字符串的宽度。例如:zheng中国…这个字符串要占用多长时间?

回答:

对于单个字符串,您可以获取给定图形字体的度量,然后使用该度量来计算字符串大小。例如:

String      message = new String("Hello, StackOverflow!");

Font defaultFont = new Font("Helvetica", Font.PLAIN, 12);

FontMetrics fontMetrics = new FontMetrics(defaultFont);

//...

int width = fontMetrics.stringWidth(message);

如果您有更复杂的文本布局要求,例如在给定宽度内流动一段文本,则可以创建一个java.awt.font.TextLayout对象,例如此示例(来自docs):

Graphics2D g = ...;

Point2D loc = ...;

Font font = Font.getFont("Helvetica-bold-italic");

FontRenderContext frc = g.getFontRenderContext();

TextLayout layout = new TextLayout("This is a string", font, frc);

layout.draw(g, (float)loc.getX(), (float)loc.getY());

Rectangle2D bounds = layout.getBounds();

bounds.setRect(bounds.getX()+loc.getX(),

bounds.getY()+loc.getY(),

bounds.getWidth(),

bounds.getHeight());

g.draw(bounds);

以上是 如何计算字体的宽度? 的全部内容, 来源链接: utcz.com/qa/423819.html

回到顶部