Логічні шрифти. Функції виводу тексту і зміни колірних характеристик

Додатки працюють не з фізичними, а з логічними шрифтами Логічний шрифт це обєкт GDI, що містить вимоги до шрифту з боку додатки Ці вимоги аналізуються підсистемою GDI, і з допомогою драйверів шрифтів підбираються відповідні зареєстровані в системі фізичні шрифти Логічний шрифт має дескриптор За умовчанням в контекст пристрою завантажений растровий шрифт з символами змінної ширини SYSTEMFONT з кодуванням ANSI Існує набір вбудованих шрифтів, які дескриптори яких запитуються для завантаження в контекст функцією GetStockObject

Якщо потрібно створити власний логічний шрифт, то використовується функція CreateFont або CreateFontlndirect Функція Create-Font має 14 параметрів, що описують логічний шрифт, a Cre­ateFontlndirect один параметр, що представляє собою покажчик на структуру LOGFONT, містить ті ж 14 параметрів логічного шрифту

Структура LOGFONT має поля:

-&nbsp IfHeight бажана висота шрифту (за замовчуванням 12 пунктів)

-&nbsp IJWidth бажана середня ширина символу

-&nbsp IfEscapement кут між базовою лінією тексту і віссю ОХ пристрої (відлік проти годинникової стрілки)

-&nbsp IfOrientation орієнтація символу, тобто кут між базовою лінією символу і віссю ОХ пристрої (відлік проти годинникової стрілки) Це поле використовується незалежно від IfEscapement тільки в розширеному графічному режимі, в інших випадках значення орієнтації символу збігається з IfEscapement

-&nbsp IJWeight бажана жирність логічного шрифту (від 0 до 1000)

-&nbsp Ifltalic, IfUnderline, IfStrikeOut ознаки курсиву, підкресленого, перекресленим шрифту

-&nbsp IfCharSet набір символів логічного шрифту

-&nbsp IfOutPrecision критерій відповідності параметрів логічного шрифту наявними фізичним шрифтів при їх підборі Наприклад, можливо вказати бажаний вибір растрових або TrueType шрифтів

-&nbsp IfClipPrecision метод зміни зображення символу, що потрапив за межі регіону відсікання

-&nbsp IfQuality якість висновку гліфів (0 зовнішній вигляд неважливий, 1-дозволяє змінювати растрові шрифти з втратою якості, 2 забороняє зміна растрових шрифтів, 3 і 4 забороняє / дозволяє згладжування)

-&nbsp IfPitchAndFamily крок і сімейство логічного шрифту

-&nbsp IfFaceName рядок, що містить імя гарнітури шрифту, що закінчується нулем Довжина рядка не повинна перевищувати 32 байта Імена наявних гарнітур можна отримати за допомогою функції EnumFontFamiliesEx

Після створення логічного шрифту функціями CreateFont або CreateFontlndirect ними повертається дескриптор шрифту, який необхідно перед виведенням тексту завантажити в контекст пристрою функцією SelectObject При цьому відбувається підстановка фізичного шрифту GDI порівнює параметри логічного шрифту з параметрами різних шрифтів, доступних для графічного пристрою, вибираючи найбільш відповідний шрифт Для порівняння використовуються штрафні очки, які мають різні вагові коефіцієнти Вибирається той шрифт, для якого штрафна сума буде найменшою Найбільш важливим фактором при підборі фізичного шрифту є набір символів, який задається в полі IfCharSet При розбіжності цього атрибута дуже велика ймовірність, що символи будуть виводитися абсолютно невірними гліфами Наступне по важливості поле – це LfOutPrecision Цей показник обмежує розглядаються набори символів певними типами шрифтів Потім оцінюється поле IfFaceName, а після нього – поле IfPitchAndFamily По-сле порівняння вказаних полів GDI порівнює висоту символів, задану в поле Iffleight, а потім поля IfWidth, Ifltalic, IfUnderLine, LfStrikeOut

Для виведення текстового рядка в найпростішому випадку можна використовувати TextOut, має такі параметри:

– дескриптор контексту пристрою

– х-координата початкової точки виведення

– у-координата початкової точки виведення

– адреса рядка, що виводиться

– число символів в рядку

Позиціонування рядка залежить від поточного режиму вирівнювання, заданого в контексті пристрою і визначального, що вважати опорною точкою при виведенні задану початкову точку або поточну позицію пера в контексті пристрою Також режим вирівнювання визначає, як позиціонувати рядок тексту (обрамляє прямокутник) щодо опорної точки і як виводити текст: зліва направо або справа наліво Значення цього атрибута можна змінити за допомогою функції SetTextAlign

При виведенні тексту можна змінити колір символів (SetTextColor), колір фону під символами (SetBkColor), режим фону знакомест (прозорий чи ні) (SetBkMode), вирівнювання тексту відносно заданих в TextOut координат Для виведення тексту також можна використовувати функцію DrawText, дозволяє виводити довгий текст в заданий прямокутник

Джерело: Сучкова, ЛІ Win32 API: основи програмування: навчальний посібник / ЛІ Сучкова АлтГТУ ім ШІ Ползунова -Барнаул, АлтГТУ, 2010 138 с, іл

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*