Читайте также:
|
|
Приложение может получить идентификатор шрифта, указав его параметры (такие как размеры символов, семейство шрифта, наклон относительно горизонтальной оси и т. п.) функции CreateFont. Эта функция имеет 14 параметров, поэтому не слишком удобна в использовании. Вместо нее лучше пользоваться функцией CreateFontIndirect:
HFONT WINAPI CreateFontIndirect(const LOGFONT FAR* lplf);
Функция возвращает идентификатор созданного логического шрифта, который можно выбрать в контекст отображения макрокомандой SelectFont, при этом для вывода будет подобран наиболее подходящий физический шрифт.
В качестве параметра функции CreateFontIndirect передается указатель на структуру типа LOGFONT, определенную в файле windows.h:
typedef struct tagLOGFONT
{
int lfHeight; //Высота шрифта в логических единицах. Если указано нулевое значение, выбирается шрифт размером в 12 пунктов (значение по умолчанию).
int lfWidth; // Ширина символов в логических единицах.Если указано нулевое значение, используется значение по умолчанию, которое зависит от высоты шрифта и отношения масштабов по осям
int lfEscapement; // Угол между базовой линией шрифта и координатной осью X в десятых долях градуса
int lfOrientation; // Это поле определяет ориентацию символов шрифта. операционная система Windows версии 3.1 игнорирует поле lfOrientation
int lfWeight; // Определяет жирность символов шрифта.(FW_DONTCARE-0, FW_NORMAL-400, FW_BOLD-700,до 1000)
BYTE lfItalic; //если не 0,то курсор
BYTE lfUnderline; // не равно нулю, запрашивается шрифт с подчеркиванием
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
char lfFaceName[LF_FACESIZE];
} LOGFONT;
typedef LOGFONT* PLOGFONT;
typedef LOGFONT NEAR* NPLOGFONT;
typedef LOGFONT FAR* LPLOGFONT;
Перед вызовом функции CreateFontIndirect вы должны заполнить структуру LOGFONT нужными значениями, определяющими параметры шрифта. В неиспользованные поля следует записать нулевые значения. Можно записать нулевые значения во все поля, однако это едва ли имеет смысл.
Выбор созданного шрифта в контекст отображения
Если вы заполнили все нужные поля в структуре LOGFONT и затем передали адрес структуры функции CreateFontIndirect, эта функция вернет идентификатор шрифта. Вы должны выбрать шрифт с этим идентификатором в контекст отображения с помощью макрокоманды SelectFont (точно так же, как для встроенных шрифтов):
hfontOldFont = SelectFont(hdc, hfont);
Как только в созданном шрифте отпадет необходимость, его следует удалить при помощи макрокоманды DeleteFont, предварительно выбрав в контекст отображения тот шрифт, который был выбран в него раньше:
#define DeleteFont(hfont) \
DeleteObject((HGDIOBJ)(HFONT)(hfont))
Дата добавления: 2015-01-30; просмотров: 97 | Поможем написать вашу работу | Нарушение авторских прав |