我试图在画布的中心绘制一个文本,因为canvas在BaseLine开始绘制文本,所以我不能将它放在中心。如果我能得到baseLine,那么我就能计算出中心。
我已经用paint.getFontMetrics()试过了,它给出了上升和下降,但没有baseLine。
发布于 2019-07-26 17:45:30
所有关于baseLine的paint.getFontMetrics()计算都会发生。所以如果我只减去(getMeasuredHeight() / 2f) - (fontMetrics.ascent / 2f),它将从中心开始绘制
发布于 2019-07-26 17:30:00
你有没有试过这个代码
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);
}https://stackoverflow.com/questions/57216926
复制相似问题