GeXiangDong

精通Java、SQL、Spring的拼写,擅长Linux、Windows的开关机

0%

Graphics2D.drawString 方法的x,y参数

JDK中Graphics2D类 drawString(String str, float x, float y) 方法的后两个参数是用来控制字符串的位置。

这2个参数即不是字符串左上角距画布原点的坐标,也不是左下角距原点的坐标,而是baseline起点距原点的坐标。说到baseline,请参照下图

字体

如上图,红色线是字体描画时的baseline(基线),小写英文字母是可能有些部分在baseline以下的,比如 gjpqy 等,中文每个字都有可能有部分在baseline以下。baseline和字的最上方之间的距离称作 ascent,baseline和最下方之间的距离叫 descent. 这两段距离可以通过 FontMetrics 类获取。

如果要想被画的文字左上角在x,y 位置,可以通过如下代码

1
2
3
4
5
public void drawString(Graphics2D g, String s, float x, float y){
FontMetrics metrics = g.getFontMetrics(g.getFont());
g.drawString(s, x, y - metrics.getAscent());
}

通过FontMetrics类,我们还可以获取一段文字的实际占用宽度等,可以实现右对齐和居中对齐