netlib.narod.ru< Назад | Оглавление | Далее >

Разделение текстовых строк

В главе 3 вы увидели, что метод DrawString правильно отображает несколько строк текста, разделенных символом перевода строки, и вписывает их в прямоугольник. Но в программах, отображающих несколько строк текста, разбитых на колонки, бывает удобнее вызывать DrawString отдельно для каждой строки в каждой колонке. Это подразумевает задание конкретной координаты начала каждой строки текста при вызове DrawString.

В той же главе я рассказывал о методе MeasureString класса Graphics. Этот метод возвращает высоту символа в строке. Хотя он и годится для разделения последовательных строк текста, это не очень удобно. Для разделения, согласующегося с возможностью переноса слов в DrawString, надо использовать значение, несколько отличающееся от значения высоты символа, возвращаемого MeasureString. Здесь мы сталкиваемся со слегка запутанным вопросом, поскольку по именам свойств и методов, предоставляющих правильные значения межстрочных интервалов, можно подумать, что речь идет о высоте символов шрифта! Самым обобщенным методом для получения значения межстрочного интервала является метод GetHeight класса Font:

  float cySpace = font.GetHeight(grfx);

В имени переменной я использовал префикс су для обозначения количества (count) пикселов в направлении оси Y, т.е. высоты. В данной инструкции font — это объект типа Font, a grfx — объект типа Graphics. Я назвал этот метод самым обобщенным,так как аргумент Graphics позволяет применять его как для монитора, так и для принтера. Метод учитывает все преобразования. (Преобразования позволяют использовать при выводе графической информации не только пикселы, но и другие единицы измерения. Подробнее об этом см. главу 7.) Заметьте: возвращаемое значение имеет тип float. Для некоторых шрифтов значение, возвращаемое GetHeight, совпадает со значением MeasureString. Однако для большинства шрифтов оно немного меньше.

Другая версия метода GetHeight предоставляет значение межстрочного интервала, пригодное только для вывода на экран, но не на принтер. Этот метод следует применять только для вывода без использования преобразований:

  float cySpace = font.GetHeight();

Если округлить это значение типа float до ближайшего большего целого, вы получите значение, возвращаемое свойством Height класса Font:

  int cySpace = font.Height;

Если при выводе на экран в качестве единиц измерения используются пикселы (что имеет место по умолчанию), лучше задействовать свойство Height класса Font.

При использовании метода GetHeight или свойства Height со шрифтом формы по умолчанию можно просто указать свойство Font формы как объект:

  float cySpace = Font.GetHeight();
  int   cySpace = Font.Height;

В этих инструкциях префикс Font ссылается на свойство Font. Класс Form содержит защищенное неизменяемое свойство FontHeight (унаследованное из класса Control), которое возвращает значение типа int, согласующееся со свойством Font.Height. Хотя теоретически вы можете изменять это свойство, это не приведет к изменению размера шрифта, применяемого в форме по умолчанию.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz