JDK中Graphics2D类 drawString(String str, float x, float y)
方法的后两个参数是用来控制字符串的位置。
这2个参数即不是字符串左上角距画布原点的坐标,也不是左下角距原点的坐标,而是baseline起点距原点的坐标。说到baseline,请参照下图
如上图,红色线是字体描画时的baseline(基线),小写英文字母是可能有些部分在baseline以下的,比如 gjpqy 等,中文每个字都有可能有部分在baseline以下。baseline和字的最上方之间的距离称作 ascent,baseline和最下方之间的距离叫 descent. 这两段距离可以通过 FontMetrics 类获取。
如果要想被画的文字左上角在x,y 位置,可以通过如下代码
1 | public void drawString(Graphics2D g, String s, float x, float y){ |
通过FontMetrics类,我们还可以获取一段文字的实际占用宽度等,可以实现右对齐和居中对齐