如何计算字体的宽度?
我正在使用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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
对于单个字符串,您可以获取给定绘图字体的规格,并使用它来计算字符串大小。例如:
如果您有更复杂的文本布局要求,例如在给定宽度内流动一段文本,您可以创建一个
java.awt.font.TextLayout
对象,例如此示例(来自文档):For a single string, you can obtain the metrics for the given drawing font, and use that to calculate the string size. For example:
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):请参阅 Graphics.getFontMetrics () 和 FontMetrics.stringWidth()。
See Graphics.getFontMetrics() and FontMetrics.stringWidth().
这是一个简单的应用程序,可以向您展示如何在测试字符串宽度时使用 FontMetrics:
here is a simple app that can show you how to use FontMetrics when testing the width of a String:
看看这个精彩的演示,特别是“文本测量”部分。它解释了可用的大小及其用途:高级 Java 2D™ 主题桌面应用程序。
Java2D 常见问题解答:逻辑、视觉和逻辑之间有什么区别像素边界?
Take a look at this great presentation, especially "Text Measurement" part. It explains available sizes and their uses: Advanced Java 2D™ topics for Desktop Applications.
Some more information in Java2D FAQ: What is the difference between logical, visual and pixel bounds?
使用以下类中的 getWidth 方法:
Use the getWidth method in the following class:
你可以从 Font.getStringBounds() 中找到它:
You can find it from Font.getStringBounds():