Как найти битовую длину текста с определенным шрифтом и размером шрифта - PullRequest
0 голосов
/ 02 февраля 2019

Я разрабатываю код JavaScript NativeScript для создания динамического текстового маркера для карт.У меня работает код, который создает маркер для конкретной строки.Мой следующий шаг - взять любую заданную строку, определить ее высоту и ширину в битах и ​​создать маркер размером с текст.

Моя проблема заключается в поиске размера текста с учетом самой текстовой строки, размера шрифта и семейства шрифтов.

Похоже, что getMeasuredWidth может работать, за исключением того, что строка должна быть уже загружена на страницу, прежде чем эта функция вернет значение.В моем случае мне просто нужно вычислить размер;иначе текст не будет отображаться как таковой на странице (текст в маркере становится изображением).

Есть ли способ сделать это?

var bmp = BitmapFactory.create(200);
bmp.dispose(function (b) {
try {
  b.drawRect(
    "100,34", // size
    '0,0', // upper-left coordinate
    KnownColors.Black, // border color
    KnownColors.Cornsilk // fill color
  );

  b.writeText(
    "Parking",
    "2,25",
    { color: KnownColors.Black, size: 8, name: 'fontawesome-webfont', });

...

В приведенном выше коде ширина "100" ограничивающего прямоугольника фактически представляет ширину в битах "парковки" с небольшим количеством отступов.То, что я хочу сделать, вычисляет высоту и ширину прямоугольника, а не жестко его кодирует.

1 Ответ

0 голосов
/ 02 февраля 2019

Попробуйте, найдите размер этикетки без добавления ее на страницу при нажатии кнопки

export function onFindButtonTap(args: EventData) {
 const button = <any>args.object;

 const label = new Label();
 label.text = "Hello, found my size?"
 label.fontSize = 20;

 (<any>label)._setupAsRootView(button._context);
 label.onLoaded();
 label.measure(0, 0);
 console.log(`Width : ${label.getMeasuredWidth()} x Height : ${label.getMeasuredHeight()}`);
}

Образец игровой площадки

Примечание: Я не сделалУ меня еще нет возможности протестировать его с iOS, дайте мне знать, если у вас возникнут какие-либо проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...