// Canvas.Font.Handle. Параметры fdwItalic, fdwUnderline
// и fdwStrikeOut, согласно справке, могут принимать
// значения True или False, но имеют тип DWORD. Для
// С/C++ это не имеет значения — целый и логический типы
// в этих языках совместимы. Но в Delphi приходится
// использовать 0 и 1 вместо True и False. Угол поворота
// шрифта задается в десятых долях градуса, т. е.
// значение 600 означает 60 градусов.
Canvas.Font.Handle:= CreateFont(60, 0, 600, 600, FW_NORMAL, 0, 0, 0,
ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_РIТСН, 'Times New Roman');
Canvas.TextOut(140, 320, 'Sample');
// Эта строка нужна для того, чтобы пример работал
// корректно в BDS2006 и выше. В этой версии у класса
// TFont появилось свойство Orientation, задающее
// направление текста, и этот класс научился определять
// и сохранять это направление даже в том случае, если
// оно было задано функцией GDI, а не через свойство
// Orientation. Чтобы этого не происходило, нужно снова
// придать шрифту горизонтальное направление. В версиях
// Delphi, более ранних, чем BDS 2006, эта строка
// не нужна: при изменении шрифта через класс TFont
// направление текста и так станет горизонтальным.
Canvas.Font.Handle:= Create Font(60, 0, 0, 0, FW_NORMAL, 0, 0, 0,
ANSI_CHARSET, OUT_TT_PRECIS, CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH, 'Times New Roman');
Новый шрифт создается функцией CreateFont
. Если бы мы программировали без VCL, то полученный в результате вызова этой функции дескриптор шрифта необходимо было бы выбрать в контексте устройства (функция SelectObject
) и вывести надпись. Затем в устройстве следовало бы выбрать другой шрифт, а созданный ранее удалить. Но т. к. VCL мы все же используем, можно поступить проще: присвоить созданный дескриптор свойств Canvas.Font.Handle
, а все остальное сделают классы TCanvas
и TFont
.
Вообще говоря, при использовании GDI нет нужды каждый раз заново создавать шрифт или любой другой объект, когда они понадобятся. Создать их можно один раз, а затем указать в программе сохраненный дескриптор везде, где это необходимо.
Функция CreateFont
имеет 14 параметров, определяющих свойства создаваемого шрифта. Мы не будем перечислять их все, отметим только, что мы здесь создаем шрифт на основе гарнитуры Times New Roman, имеющий размер 60 обычный (т. е. не жирный и не наклонный). О точных значениях всех параметров рекомендуем посмотреть в MSDN.