Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Определение логического шрифта

Читайте также:
  1. C.) Дайте определение понятию технология воспитания(один ответ)
  2. F68.1 Умышленное вызывание или симулирование симптомов или инвалидности физического или психологического
  3. I. СИСТЕМА ПСИХОЛОГИЧЕСКОГО ОБЕСПЕЧЕНИЯ ОБРАЗОВАНИЯ В СОВРЕМЕННЫХ УСЛОВИЯХ
  4. А) Деятельность Московского археологического общества (МАО). Создание Московского археологического общества.
  5. Агрохимические свойства почв и определение индекса окультуренности.
  6. Акты Президента РФ, Правительства РФ и нормативные акты министерств и ведомств как источники экологического права.
  7. Акционерные общества, их определение. Отделение собственности от контроля.
  8. Анализ почерка при описании психологического портрета.
  9. Анализ структуры ВВП рассчитанного производственным методом: определение, факторы, структурная динамика ВВП, тенденции.
  10. Анкетирование как метод психологического исследования

Приложение может получить идентификатор шрифта, указав его параметры (такие как размеры символов, семейство шрифта, наклон относительно горизонтальной оси и т. п.) функции 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 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав