1.2 Получение хендла шрифта

Для того, что бы Вы могли применять шрифт в Вашей программе, Вы должны сначала получить хендл соответствующего шрифта. Шрифт является объектом GDI, поэтому работа с ним похожа на работу с другими объектами GDI. Как правило вы должны выполнить следующие действия:

получить хендл либо стандартного шрифта, либо создав "новый" шрифт

При создании "нового" шрифта создается соответствующий объект GDI, а не новый файл описания шрифта.

выбрать шрифт в контекст устройства

осуществить вывод, используя текущий шрифт

если шрифт был создан, то его надо уничтожить.

Создание шрифтов занимает некоторое время (особенно для отображения TrueType шрифтов - Windows автоматически генерирует промежуточный растровый шрифт, который и используется при выводе). Если надо создавать шрифты, то это удобно делать при создании окна или даже при запуске приложения, а уничтожать - при закрытии окна или при завершении приложения (как и все объекты GDI, созданный шрифт уничтожается с помощью функции DeleteObject).

Если Вам надо получить хендл стандартного шрифта, то Вы можете воспользоваться функцией:

HFONT GetStockObject( nIndex );

Параметр nIndex может быть:

ANSI_FIXED_FONT соответствует шрифту Courier
ANSI_VAR_FONT соответствует шрифту MS Sans Serif
OEM_FIXED_FONT соответствует шрифту Terminal
SYSTEM_FONT соответствует шрифту System; этот шрифт используется по умолчанию
SYSTEM_FIXED_FONT соответствует шрифту FixedSys; До версии Windows 3.0 системный шрифт был фиксированной ширины, он включен в Windows 3.1 для совместимости.
DEVICE_DEFAULT_FONT соответствует шрифту, загруженному в устройство; для дисплея не определен

Если Вам надо создавать собственный шрифт, то Вы можете воспользоваться одной из двух функций:

HFONT CreateFont(

nHeight, nWidth, nEscapement, nOrientation, nWeight,

bItalic, bUnderline, bStrikeOut,

bCharSet, bOutputPrecision, bClipPrecision, bQuality, bPitchAndFamily,

lpszFacename);

или

HFONT CreateFontIndirect( lpLogFont );

Чаще применяется функция CreateFontIndirect(), получающая в качестве параметра указатель на структуру LOGFONT. Поля этой структуры совпадают с аргументами функции CreateFont().

typedef struct tagLOGFONT {

int lfHeight;

int lfWidth;

int lfEscapement;

int lfOrientation;

int lfWeight;

BYTE lfItalic;

BYTE lfUnderline;

BYTE lfStrikeOut;

BYTE lfCharSet;

BYTE lfOutPrecision;

BYTE lfClipPrecision;

BYTE lfQuality;

BYTE lfPitchAndFamily;

BYTE lfFaceName[LF_FACESIZE];

} LOGFONT;

Рассмотрим назначение полей этой структуры:

lfHeight задает требуемый размер шрифта в точках (пунктах). Если значение положительно, то в высоту включается межстрочный промежуток, а если отрицательно, то модуль указывает высоту символа шрифта. Значение 0 указывает, что используется значение высоты по умолчанию.

lfWidth задает среднюю ширину символов в пунктах. Значение 0 соответствует ширине по умолчанию.

lfEscapement задает наклон базовой линии строки в десятых долях градуса. Для растровых шрифтов игнорируется.

lfOrientation задает ориентацию символа относительно базовой линии в десятых долях градуса. Игнорируется для растровых и TrueType шрифтов, для векторных используются значения: 0, 900, 1800 и 2700

lfWeight задает вес символа (жирность). Соответствует количеству закрашенных пиксел из 1000. Предусмотрены условные обозначения для определения веса, начинающиеся на FW_... Например, нормальный текст (400) соответствует FW_NORMAL (FW_REGULAR), жирный (700) FW_BOLD.

lfItalic ненулевое значение задает наклон символов (начертание slanted). Значение 0 соответствует обычному тексту.

lfUnderline ненулевое значение задает подчеркивание строки текста линией. Значение 0 соответствует обычному тексту.

lfStrikeOut ненулевое значение задает перечеркивание строки текста линией. Значение 0 соответствует обычному тексту.

lfCharSet задает кодовую таблицу, которую должен поддерживать данный шрифт. Используются следующие условные обозначения:

ANSI_CHARSET кодовая таблица ANSI

OEM_CHARSET кодовая таблица OEM

SYMBOL_CHARSET символы

SHIFTJIS_CHARSET японская азбука

DEFAULT_CHARSET любая кодовая таблица.

lfOutPrecision указывает, насколько точно должен соответствовать подбираемый шрифт указанному размеру. (Реально Вы можете заказать растровый шрифт несуществующего размера). См. условные обозначения вида OUT_???_PRECIS в windows.h.

lpClipPrecision указывает, как должен отображаться частично невидимый символ. См. условные обозначения вида CLIP_???_PRECIS в windows.h.

lfQuality указывает качество получаемого шрифта. Обычно используется значение PROOF_QUALITY (или DEFAULT_QUALITY). Если размер растрового шрифта меньше, чем требуется, то Windows может масштабировать шрифт. Однако при этом резко ухудшается качество, поэтому масштабирование можно запретить, используя значение PROOF_QUALITY.

lfPitchAndFamily два младших бита задают тип шрифта - DEFAULT_PITCH (любой тип), VARIABLE_PITCH (пропорциональный) или FIXED_PITCH (моноширинный); старший байт указывает семейство, которое задается одним из следующих символов: FF_DECORATIVE, FF_DONTCARE, FF_MODERN, FF_ROMAN, FF_SCRIPT, FF_SWISS.

lfFaceName массив из LF_FACESIZE символов, содержащий заканчивающееся \0 имя шрифта. Пустое имя соответствует шрифту устройства.

 


Информация о работе «Семейства шрифтов в Windows»
Раздел: Информатика, программирование
Количество знаков с пробелами: 44636
Количество таблиц: 5
Количество изображений: 0

Похожие работы

Скачать
49635
0
7

и, при ко-  вкручивает лампочку? Он берет ее тором вы получаете возможность в руку и заставляет Вселенную комбинировать изображение, звук вращаться вокруг себя. Windows - и текст). не просто операционная система, 6.Использование масштабируемых  это новая философия работы с шрифтов True Type. В Windows компьютером. (из реферата о Windows)   ...

Скачать
29935
1
0

... для построения информационной системы любого масштаба: от простейшей сети из нескольких персональных компьютеров до сложной гетерогенной системы на сотни тысяч пользователей. Система безопасности Windows NT Server обеспечивает защиту информации и системных служб от несанкционированного доступа и от неквалифицированных действий пользователей. Операционные системы Windows NT Server и Windows NT® ...

Скачать
26182
0
2

... Восстановление Поиск Просмотр и изменение свойств файлов и папок Создание ярлыка на рабочем столе (правой кнопкой мыши, с проводника, с главного меню, с папки мой компьютер) Настройка операционной системы Windows Настройка ОС осуществляется с целью создания условий для эффективной работы на ПК. Средства настроек можно разделить на пять групп: Средства ввода – вывода (клавиатура, мышь, ...

Скачать
152655
7
3

... дейст­вий одной из них; • обращение к внешним устройствам только через операционную систему, что по­зволяет программистам использовать уже написанные драйверы, и не заниматься проблемами обеспечения совместимости с ними вновь разработанных программ; • возможность использования звуковых и видеоприложений. В отличие от Windows З.х новая операционная система не нуждается в установке на компьютере ...

0 комментариев


Наверх