Среда, 02.07.2025, 17:23
Приветствую Вас Гость

Soft by Warik

NEMO_CHAT
Категории раздела
Анекдот
Случайный анекдот:

Наши часики
Опрос
Какая у вас скорость интернета?
Всего ответов: 59
Статистика
Rambler's Top100




Онлайн всего: 4
Гостей: 4
Пользователей: 0
Главная » Статьи » Win API [ Добавить статью ]

Работа со шрифтами на Win API

Сегодня поговорим о шрифтах, и о том, каким образом работать с ними на Win API. Нам потребуется переменная типа HFONT. Изменить стиль шрифта можно у любого компонента, я покажу это на примере кнопки.

Code
var
  Font: HFONT;
  Btn: HWND;

Для создания нового экземпляра шрифта используется функция CreateFont, которая, в случае успешного завершения, возвращает Handle нового шрифта. Рассмотрим параметры этой функции.

Code
procedure CreateFont(
  nHeight: integer, // логическая высота шрифта
  nWidth: integer, // логическая ширина символа
  nEscapement: integer, // угол наклона
  nOrientation: integer, // базовый угол ориентации
  fnWeight: integer, // вес шрифта (можно считать как толщину символа)
  fdwItalic: Cardinal, // будет ли шрифт курсивным
  fdwUnderline: Cardinal, // будет ли шрифт подчеркнутым
  fdwStrikeOut: Cardinal, // будет ли шрифт зачеркнутым
  fdwCharSet: Cardinal, // идентификатор набора символов
  fdwOutputPrecision: Cardinal, // точность вывода
  fdwClipPrecision: Cardinal, // точность отсечения
  fdwQuality: Cardinal, // качество вывода
  fdwPitchAndFamily: Cardinal, // шаг и семейство шрифта
  lpszFace: PChar // Название шрифта
  ): HFONT;

Подробную информацию по каждому параметру можно прочитать в справке, я обращу ваше внимание лишь на некоторые из них. Отрицательное значение первого параметра говорит о том, что будет выбрано абсолютное значение высоты шрифта. Третий параметр отвечает за угол поворота шрифта относительно оси X. Угол задается в десятых долях градуса, то есть, чтобы повернуть текст на угол на 90°, нужно задать значение, равное 900. Для последних параметров можно использовать значение по умолчанию. Но если мы собираемся повернуть текст на какой-либо угол, то параметр fdwQuality лучше задать как ANTIALIASED_QUALITY, в этом случае текст будет сглажен. Посмотрим, как это реализуется.

Code
Font := CreateFont( -30, 15, 25, 10, 1000, 1, 1, 0,
  DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
  CLIP_DEFAULT_PRECIS, ANTIALIASED_QUALITY,
  DEFAULT_PITCH or FF_DONTCARE, 'Courier New' );

Чтобы назначить компоненту новый шрифт, ему нужно послать сообщение WM_SETFONT, где в качестве параметра wParam, нужно указать значение, возвращенное функцией CreateFont.

Code
Btn := CreateWindowEx( 0, 'Button', 'Наш новый шрифт', WS_CHILD or WS_VISIBLE,
  10, 10, 280, 60, Wnd, 0, hInstance, nil );
SendMessage( Btn, WM_SETFONT, Font, 0 );

На сегодня это все. Успехов в программировании.

Источник: http://nemo-chat.3dn.ru

Категория: Win API | Добавил: Warik (23.02.2010)
Просмотров: 516 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Мини-профиль

Гость !



Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!
Друзья сайта