Spec-Zone .ru
спецификации, руководства, описания, API
|
Чтобы должным образом измерить текст, Вы должны изучить несколько методов и некоторые ошибки избежать. Метрики шрифта являются измерениями текста, представленного a Font
возразите, такие как height строки текста в шрифте. Наиболее распространенный способ измерить текст состоит в том, чтобы использовать a FontMetrics
// get metrics from the graphics FontMetrics metrics = graphics.getFontMetrics(font); // get the height of a line of text in this // font and render context int hgt = metrics.getHeight(); // get the advance of my text in this font // and render context int adv = metrics.stringWidth(text); // calculate the size of a box to hold the // text with some padding. Dimension size = new Dimension(adv+2, hgt+2);
Этот путь достаточен для многих приложений, чтобы равномерно расположить строки с интервалами текста или измерить компоненты Swing.
Отметьте следующее:
Graphics
FontRenderContext
, который необходим, чтобы точно измерить текст. В разрешениях экранов шрифты корректируются для простоты чтения. Поскольку размер текста увеличивается, эта корректировка не масштабируется линейно. Так, в 20 pt шрифт не будет выводить на экран текст точно дважды длина, как это было бы в 10 pt. Помимо текста непосредственно и шрифта, должна была измериться другая важная информация, текст FontRenderContext
. Этот метод включает преобразование от пространства пользователя до пикселей устройства, которое используется в измеряющемся тексте.stringWidth()
возвращает усовершенствование width текста. Усовершенствование width является расстоянием от источника текста к позиции впоследствии представленной строки.При использовании этих методов, чтобы измерить текст, отметьте, что текст может расшириться в любом направлении за пределами прямоугольника, определенного шрифтом height и усовершенствование строки.
Как правило, самое простое решение состоит в том, чтобы гарантировать, что текст не отсекается, например, компонентами, которые окружают текст. Добавьте дополнение в случаях, где текст мог бы иначе быть отсечен.
Если это решение недостаточно, другие текстовые измерительные API в Java 2D™, программное обеспечение может возвратить прямоугольные ограничивающие прямоугольники. Эти поля учитывают height определенного текста, который будет измерен и для pixelization эффектов.