java计算文字的宽度,如何计算字体的宽度?

I am using java to draw some text, but it is hard for me to calculate the string's width.

for example:

zheng中国...

How long will this string occupy?

解决方案

For a single string, you can obtain the metrics for the given drawing font, and use that to calculate the string size. For example:

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

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

FontMetrics fontMetrics = new FontMetrics(defaultFont);

//...

int width = fontMetrics.stringWidth(message);

If you have more complex text layout requirements, such as flowing a paragraph of text within a given width, you can create a java.awt.font.TextLayout object, such as this example (from the 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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值