Установите прямоугольник вокруг строки на холсте Android

StackOverflow https://stackoverflow.com/questions/6317484

Вопрос

Итак, я использую 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);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top