На этом шаге мы рассмотрим состав класса TFont.
Богатство изобразительных возможностей Windows связано с так называемым дескриптором контекста графического устройства DC (Device Context) и тремя входящими в него инструментами - шрифтом, пером и кистью. В Delphi созданы специализированные классы-надстройки, существенно упрощающие использование графических инструментов Windows: для контекста - класс TCanvas, для шрифта - TFont, для пера - ТРеn и для кисти - TBrush.
Связанные с этими классами объекты автоматически создаются для всех видимых элементов и становятся доступны программе через свойства Canvas, Font, Pen и Brush.
Обязательным для любого объекта, связанного с графикой в Delphi является событие:
property OnChange: TNotifyEvent; .
Его обработчик вызывается всякий раз, когда изменились какие-то характеристики объекта, влияющие на его внешний вид. В стандартном GDI основой для рисования служит дескриптор контекста устройства hDC и связанные с ним шрифт, перо и кисть. В состав VCL входят объектно-ориентированные надстройки над последними, назначением которых является удобный доступ к свойствам инструментов и прозрачная для пользователя обработка всех их изменений. Начнем рассматривать три этих класса.
С помощью класса TFont создается объект-шрифт для любого графического устройства (экрана, принтера, плоттера и т. п.). В Delphi допускаются только горизонтально расположенные шрифты. В конструкторе объекта по умолчанию принимается шрифт System цвета clWindowText размера 10 пунктов. Свойства класса перечислены в таблице 1:
Свойство | Описание |
---|---|
property Color: TColor; | Цвет шрифта. |
property Charset: TFontCharSet; | Набор символов. Для русскоязычных программ это свойство обычно имеет значение DEFAULTCHARSET или russian charset. Используйте значение OEMCHARSET для отображения текста MS-DOS (альтернативная кодировка). |
property FontAdapter: TChangeNotifier; | Поставляет информацию о шрифте в компоненты ActiveX. |
property Handle: TFont; | Дескриптор шрифта. Используется при непосредственном обращении к API-функциям Windows. |
property Height: Integer; | Высота шрифта в пикселях. |
property Name: TFontName; | Имя шрифта. По умолчанию имеет значение MS Sans Serif. |
property Pitch: TFontPitch; | Определяет способ расположения букв в тексте: значение fpFixed задает моноширинный текст, при котором каждая буква имеет одинаковую ширину; значение fpVariable определяет пропорциональный текст, при котором ширина буквы зависит от ее начертания; fpDefault определяет ширину, принятую для текущего шрифта. |
property PixelPerInch: Integer; | Определяет количество пикселей экрана на один дюйм реальной длины. Это свойство не следует изменять, так как оно используется системой для обеспечения соответствия экранного шрифта шрифту принтера. |
property Size: Integer; | Высота шрифта в пунктах (1/72 дюйма). Изменение этого свойства автоматически изменяет свойство Height и наоборот. |
property Style: TFontStyles; | Стиль шрифта. Может принимать значение как комбинация следующих признаков: fsBold (жирный), fsItalic (курсив), fsUnderline (подчеркнутый), fsStrikeOut (перечеркнутый). |
Для некоторых случаев может оказаться полезным метод:
procedure Assign(Source: TPersistent); ,
с помощью которого значения свойств шрифтового объекта Source присваиваются свойствам текущего шрифта. Метод не изменяет свойство PixelPerInch, поэтому его можно использовать для создания шрифта принтера по экранному шрифту и наоборот.
На следующем шаге мы рассмотрим состав класса TPen.