Java:如何从ascender行drawString()

时间:2011-11-08 13:11:32

标签: java java-2d

我使用Java2D Library的drawString(...)函数在屏幕上显示一些图形文本。

参考本article中的图,我希望我的字符串是从Ascender Line而不是BaseLine中提取的。简单来说,有没有办法计算高度b / w上升线和基线?

3 个答案:

答案 0 :(得分:5)

正常drawString会将基线与y - 参数对齐。如果要绘制字符串以使上升线与y对齐,则需要传递y + fm.getAscent(),其中fm是当前FontMetrics对象。见下面的例子。

此屏幕截图:

enter image description here

由此代码生成:

FontMetrics fm = g.getFontMetrics();

g.setColor(Color.RED);
g.drawLine(10, 10, 100, 10);

g.setColor(Color.BLACK);
g.drawString("Hello frog", 10, 10 + fm.getAscent());

答案 1 :(得分:2)

您可以获取所用字体的FontMetrics对象,并使用getAscent()getMaxAscent()确定上升,以您的情况为准。

答案 2 :(得分:1)

在渲染之前将FontMetrics.getAscent()添加到y位置。