Шрифт – класс TFont
Класс TFont описывает характеристики шрифта, используемые в Windows. Все элементы управления из палитры компонентов Delphi, способные выводить текст, обладают свойством Font. Описание свойств класса шрифтов представлено в табл. 10.1.
Таблица 10.1. Основные характеристики TFont
Свойство | Описание |
property Charset: TFontCharset; | Номер набора символов шрифта. По умолчанию соответствует DEFAULT_CHARSET. Русская кириллица - RUSSIAN_CHARSET. |
property Color: TColor; | Цвет шрифта. |
property FontAdapter: IChangeNotifier; | Автоматически информирует объекты ActiveX о шрифте. |
property Handle: HFont; | Дескриптор шрифта; применяется при работе с GDI. |
property Handle: Integer; | Высота шрифта в пикселах. |
property Name: TFontName; | Имя шрифта. |
type TFontPitch = (fpDefault, fpVariable, fpFixed); property Pitch: TFont Pitch; | Способ установки ширины символов: fpDefault - по умолчанию; fpFixed - у всех символов ширина одинакова; fpVariable - переменная ширина. |
property PixelsPerInch: Integer; | Число точек на дюйм; используется Windows для установления соответствия между изображениями на экране и принтере. |
property Size: Integer; | Высота шрифта в пунктах Windows. |
property Style: TFontStyles; TFontStyle=(fsBold, fsItalic, fsUnderline, fsStrikeOut); TFontStyles= set of TFontStyle; | Способ начертания шрифта: полужирный, курсив, подчеркнутый и перечеркнутый. |
Размер шрифта можно изменить при помощи Height или Size. Свойства связаныформулой:
Font.Size = -Font.Height * 72 / Font.PixelsPerInch
Простейший способ изменения настроек шрифта в компоненте-метке Label1 представлен в следующем листинге:
WithLabel1.Font do
Begin
Name:='Arial';
Size:=8;
Color:=clRed;
Style:=Font.Style-[fsBold];
end;
Приведенный ниже листинг демонстрирует способы сбора информации о шрифтах системы в комбинированный список ComboBox1 и определяет вариант начертания каждого шрифта внутри элемента управления.
procedureTForm1.FormCreate(Sender: TObject);
Begin
ComboBox1.Items:=Screen.Fonts; // сбор шрифтов системы
ComboBox1.ItemIndex:=0;
ComboBox1.style:=csOwnerDrawFixed;
end;
procedureTForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
varsRect :TRect;
constS ='АБВГД';
Begin
WithCombobox1.Canvas do
Begin
sRect:=Rect; sRect.Right:=TextWidth(S);
Font.Name:=ComboBox1.Items.Strings[index];
TextRect(sRect, sRect.Left, sRect.Top, s);
Font.Name:='System';
TextOut(sRect.Right+10, Rect.Top, ComboBox1.Items.Strings[index]);
end;
end;
В работе со шрифтами можно добиться весьма впечатляющих результатов, лишь немного покопавшись в недрах Win32 API. Примером может стать структура LOGFONT, хранящая параметры шрифта:
tagLOGFONTA = packed record
lfHeight: Longint; // высота символа в логических единицах
lfWidth: Longint; // ширина символа в логических единицах
lfEscapement: Longint; // определяет угол поворота строки в десятых долях
// градуса относительно оси X устройства
lfOrientation: Longint; // определяет угол поворота символа; в графическом
// режиме GM_COMPATIBLE не играет роли
lfWeight: Longint; // определяет толщину линий шрифта от 0 до 900
lfItalic: Byte; // ненулевое значение задает курсивное начертание
lfUnderline: Byte; // ненулевое значение – подчеркивание
lfStrikeOut: Byte; // ненулевое значение – перечеркивание
lfCharSet: Byte; // указывает набор символов шрифта
lfOutPrecision: Byte;{определяет, в какой степени точность вывода должна
соответствовать заданным параметрам}
lfClipPrecision: Byte;{точность отсечения символов, выступающих
за пределы региона}
lfQuality: Byte; // качество вывода шрифта
lfPitchAndFamily: Byte; // определяет шаг и семейство шрифта
lfFaceName: array[0..LF_FACESIZE - 1] ofAnsiChar; // имя шрифта
end;
Предлагаемый листинг осуществляет поворот текстовой строки на 90 градусов:
varLogFont: TLOGFONT;
Begin
GetObject(Form1.Canvas.Font.Handle, SizeOf(LogFont), Addr(LogFont));
LogFont.lfFaceName:=('Arial'+#0);
LogFont.lfEscapement := 90*10; // поворот на 90 градусов
Form1.Canvas.Font.Handle := CreateFontIndirect(LogFont);
Form1.Canvas.TextOut(100,100,'АБВГДЕЕ...');
end;
Основные функции выполняет метод CreateFontIndirect(). Он создает логический шрифт в соответствии с характеристиками, заложенными в структуру TLOGFONT, и устанавливает его текущим для холста рабочей формы.
functionCreateFontIndirect(LogFont: TLOGFONT) : HFONT;
Обратите внимание, что в примере используется шрифт Arial, а не шрифт проекта по умолчанию. Причина проcта: повернуть можно только шрифты True Type.
Дата добавления: 2016-03-15; просмотров: 825;