获取字体高度,GC和FontData有什么区别?

7
这是关于字体度量的说明。 enter image description here 我认为我们可以像这样在SWT中获取“字体高度”。
GC gc = new GC(label);
System.out.println( gc.textExtent(label.getText()) );
System.out.println( label.getFont().getFontData()[0].getHeight() );

为什么这两个输出结果不同?哪一个是字符串的正确高度?
2个回答

2

GC#textExtent() 返回的是 像素,而 FontData 返回的是字体的 点数。这里的单位不同。


其实我也不是很确定,但我会通过循环字体高度直到达到所需的像素高度。 - Waqas Ilyas
谢谢。但那似乎不是一个方便的方法。 - miqbal
2
@miqbal:你可以使用 Device.getDPI() 获取系统 DPI,例如 pixels = points * Device.getDPI() / 72 - Edward Thomson
@EdwardThomson: Device.getDPI() 返回一个 Point - miqbal

0
使用FontMetrics.getHeight()以获取像素高度。
FontMetrics fontMetrics = gc.getFontMetrics()

使用此方法的问题在于,如果文本包含任何换行符。使用textExtent将包括多行像素。 - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接