Установите прямоугольник вокруг строки на холсте Android
-
26-10-2019 - |
Вопрос
Итак, я использую Canvas.drawtext чтобы нарисовать какую -то струну на Холст. Анкет Проблема в том, что я хочу нарисовать прямоугольник перед ним, чтобы текст был сосредоточен на прямоугольнике. Но я столкнулся с настоящей проблемой. Поставляется Икс а также у координации DrawText на самом деле не "верхний левый"Угол настоящего текста, а скорее на линии, где начинаются символы. Есть метод Paint.getTextBounds который возвращает прямоугольник «с подразумеваемым происхождением» в (0,0) текста, который будет нарисован. Проблема в том, что происхождение в (0,0). Анкет Ширина и высота этой коробки верны, но я не знаю, как разместить его верхний левый угол в верхнем левом углу струны, который нарисован на холсте. Я думаю, я должен использовать Fontmetrics, но так как много ценностей Fontmetrics Возврат не задокументированы, я не совсем уверен, как использовать их для моей цели.
Решение
Я закончил тем, что сделал
FontMetrics fm = new FontMetrics();
paint.setTextAlign(Paint.Align.CENTER);
paint.getFontMetrics(fm);
canvas.drawText(text, x, y + -(fm.ascent + fm.descent) / 2, paint);
Который на самом деле рисует текст, сосредоточенный на Икс, у. Анкет До этого я рисую прямоугольник с центром в Икс, у с шириной paint.measuretext (текст)
Другие советы
Попробуйте рисовать прямоугольник, используя
canvas.drawRect(x, y - Paint.GetTextSize(), x + Paint.measureText("text"), y, Paint);