MeasureString () заполняет текст слева и справа

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

17
задан svick 20 March 2013 в 15:53
поделиться

4 ответа

Именно дизайном, метод не использует фактические глифы для измерения ширины и так добавляет немного дополнения в случае нависающих краев.

MSDN предлагает использовать другой метод при необходимости в большей точности:

Для получения метрик, подходящих для смежных строк в расположении (например, при реализации форматированного текста), использование метод MeasureCharacterRanges или один из методы MeasureString , который берет StringFormat и передает GenericTypographic. Кроме того, удостоверьтесь TextRenderingHint для , Графика AntiAlias.

11
ответ дан 30 November 2019 в 13:28
поделиться

Это верно, что это дизайном, однако ссылка на принятый ответ на самом деле не прекрасна. Проблемой является использование плаваний во всех тех методах, когда то, что Вы действительно хотите использовать, является пикселями (ints).

Класс TextRenderer предназначен с этой целью и работает с истинными размерами. См. эту ссылку из MSDN для пошаговой демонстрации использования этого.

6
ответ дан 30 November 2019 в 13:28
поделиться

Кажется, что это могло бы также соединяться с выводом подсказок, на основе этой статьи Кбита, , Почему текст кажется отличающимся при рисовании с GDIPlus по сравнению с GDI

1
ответ дан 30 November 2019 в 13:28
поделиться

TextRenderer был большим для получения размера шрифта. Но в цикле рисунка, с помощью TextRenderer. DrawText был мучительно медленным по сравнению с графикой. DrawString ().

Так как ширина строки является проблемой, Ваше очень более обеспеченное использование комбинации TextRenderer. MeasureText и графика. DrawString..

0
ответ дан 30 November 2019 в 13:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: