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