Шрифт – класс 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; просмотров: 750;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.012 сек.