在Android Canvas上围绕字符串设置矩形

时间:2011-06-11 17:35:29

标签: java android graphics android-canvas

所以我使用 Canvas.drawText Canvas 上绘制一些字符串。问题是我想在它之前绘制一个矩形,以便文本显示在矩形的中心。但我遇到了一个真正的问题。提供的 x y 坐标 drawText 实际上不属于真实文本的“左上角”角落,而是在角色开始的那一行。有一种方法 Paint.getTextBounds ,它会在将要绘制的文本的(0,0)处返回一个“隐含原点”的矩形。问题是原点位于(0,0)。该框的宽度和高度是正确的,但我不知道如何将其左上角放在画布上绘制的字符串的左上角。我想我应该使用 FontMetrics ,但由于很多值 FontMetrics 返回没有记录,我不确定如何将它们用于我的目的。

2 个答案:

答案 0 :(得分:13)

我最终做了

FontMetrics fm = new FontMetrics();
paint.setTextAlign(Paint.Align.CENTER);
paint.getFontMetrics(fm);
canvas.drawText(text, x, y + -(fm.ascent + fm.descent) / 2, paint);

其中实际绘制的文字以 x y 为中心。在此之前,我绘制一个以 x 为中心的矩形, y ,宽度为 paint.measureText( text

答案 1 :(得分:3)

尝试使用

绘制矩形

canvas.drawRect(x, y - Paint.GetTextSize(), x + Paint.measureText("text"), y, Paint);

相关问题