如何String
在Java中计算以像素为单位的宽度?例如,我有一个字符串说“Hello World!”。它的像素长度是多少,还要考虑它的字体系列和大小?
问问题
8298 次
5 回答
4
简而言之:问题取决于您使用的框架。例如,如果您使用 AWT,并且有一个Graphics
objectgraphics
和一个Font
object ,font
您可以执行以下操作:
FontMetrics metrics = graphics.getFontMetrics(font);
int width = metrics.stringWidth("Hello world!");
查看此以获取更多信息。
于 2013-08-20T05:57:34.473 回答
2
你可以试试这样的
Graphics2D g2d = ...
Font font = ...
Rectangle2D r = font.getStringBounds("hello world!", g2d.getFontRenderContext());
System.out.println("(" + r.getWidth() + ", " + r.getHeight() + ")");
请参阅此文档,可能会对您有所帮助。
于 2013-08-20T05:57:41.840 回答
1
根据您想要实现的目标,有多种方法可以实现您想要的目标,例如...
BufferedImage img = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = img.createGraphics();
FontMetrics fm = g2d.getFontMetrics();
System.out.println(fm.stringWidth("This is a simple test"));
g2d.dispose();
但这仅BufferedImage
与它的Graphics
上下文相关,它不会转化为屏幕或打印机之类的东西。
但是,只要您有Graphics
上下文,就可以获得相同的结果。
显然,此示例使用为Graphics
上下文安装的默认字体,如果需要,您可以更改...
于 2013-08-20T06:00:25.407 回答
0
您可以使用FontMetrics。FontMetrics 类定义了一个字体度量对象,它封装了有关在特定屏幕上呈现特定字体的信息。
您可以执行以下操作
Font font = new Font("Verdana", Font.PLAIN, 10);
FontMetrics metrics = new FontMetrics(font) {
};
Rectangle2D bounds = metrics.getStringBounds("Hello World!", null);
int widthInPixels = (int) bounds.getWidth();
于 2013-08-20T06:00:59.197 回答
0
有几种方法可以做到这一点,label.getElement().getClientWidth();
如果文本在标签中,您可以尝试,如果您使用的是 AWT,则可以Graphics.getFontMetrics
使用FontMetrics.stringWidth
于 2013-08-20T05:58:39.557 回答