Нарисуйте текст на холсте и несколько строк - PullRequest
1 голос
/ 03 февраля 2012

Я начинаю с Canvas и Paint. Я хочу нарисовать текст на холсте, но он может быть длиннее оригинального растрового изображения. Таким образом, текст выходит из растрового изображения.

Есть ли какой-нибудь автоматический менеджер для создания новой строки при достижении конца? или я должен играть с высоты и расстояния? Спасибо

Ответы [ 3 ]

4 голосов
/ 03 февраля 2012

да, вы можете управлять этим с помощью StaticLayout или DynamicLayout

0 голосов
/ 15 ноября 2015

Лучший способ - нарисовать текст с помощью StaticLayout:

// init StaticLayout for text
StaticLayout textLayout = new StaticLayout(
  gText, paint, textWidth, Layout.Alignment.ALIGN_CENTER, 1.0f, 0.0f, false);

// get height of multiline text
int textHeight = textLayout.getHeight();

// get position of text's top left corner
float x = (bitmap.getWidth() - textWidth)/2;
float y = (bitmap.getHeight() - textHeight)/2;

// draw text to the Canvas center
canvas.save();
canvas.translate(x, y);
textLayout.draw(canvas);
canvas.restore();

Подробнее см. мой блог .

0 голосов
/ 27 февраля 2013

Я бы посоветовал вам посмотреть этот фрагмент кода, найденный здесь: https://stackoverflow.com/a/15092729/1759409

Так как он будет управлять написанием вашего текста в пределах определенной ширины и высоты и автоматически будет правильно рисовать на холсте.

...