5

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

4

2 回答 2

13

我最终做了

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

它实际上绘制了以xy为中心的文本。在此之前,我绘制了一个以x为中心的矩形,y宽度为paint.measureText( text )

于 2011-06-12T16:24:25.017 回答
3

尝试使用绘制矩形

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

于 2011-06-11T18:35:23.333 回答