如何测量在画布上绘制的文字高度?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (47)

任何直接测量文字高度的方法?我现在的做法是使用Paint的measureText()宽度,然后通过反复试验找到一个值来获得一个近似的高度。我也一直在搞乱FontMetrics,但所有这些看起来都像是近似的方法。

提问于
用户回答回答于
用户回答回答于

这绝不等于经典java中的FontMetrics。

特别是,如果你需要垂直居中对齐绘制文本,请尝试获取文本“a”(不带引号)的边界,而不要使用您打算绘制的文本。适合我...

这就是我的意思:

Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.LINEAR_TEXT_FLAG);

paint.setStyle(Paint.Style.FILL);
paint.setColor(color);
paint.setTextAlign(Paint.Align.CENTER);
paint.setTextSize(textSize);

Rect bounds = new Rect();
paint.getTextBounds("a", 0, 1, bounds);

buffer.drawText(this.myText, canvasWidth >> 1, (canvasHeight + bounds.height()) >> 1, paint);
// remember x >> 1 is equivalent to x / 2, but works much much faster

扫码关注云+社区