首页 文章

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

提问于
浏览
5

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

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)

  • 3

    尝试使用绘制矩形

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

相关问题