如何从画图获取文本基线

How to get text BaseLine from Paint

我正在尝试在 canvas 的中心绘制文本,因为 canvas 开始在 BaseLine 绘制文本,所以我无法将其放置在中心。如果我能得到基线,那么我就可以计算中心。

我试过 paint.getFontMetrics() 这给出了上升和下降但不是 baseLine。

你试过这个代码吗

private void drawCenter(Canvas canvas, Paint paint, String text) {
    canvas.getClipBounds(r);
    int cHeight = r.height();
    int cWidth = r.width();
    paint.setTextAlign(Paint.Align.LEFT);
    paint.getTextBounds(text, 0, text.length(), r);
    float x = cWidth / 2f - r.width() / 2f - r.left;
    float y = cHeight / 2f + r.height() / 2f - r.bottom;
    canvas.drawText(text, x, y, paint);
}

paint.getFontMetrics() 的所有计算都将针对 baseLine 进行。所以如果我只是减去 (getMeasuredHeight() / 2f) - (fontMetrics.ascent / 2f) 它将从中心绘制