如何从画图获取文本基线
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)
它将从中心绘制
我正在尝试在 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)
它将从中心绘制