Программирование >>  Процедурные приложения 

1 ... 114 115 116 [ 117 ] 118 119 120 ... 150


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

Функция CreateFont( )

Функция CreateFontOобъявлена в файле WINDOWS.H. Она выбирает из набора физических GDI-шрифтов тот шрифт, который наиболее точно соответствует характеристикам, указанным при ее вызове. Созданный логический шрифт может использоваться любыми устройствами. Функция CreateFontOимеет следующий синтаксис:

CreateFont( высота, ширина, ориентация, наклон, толщина, курсив, подчеркивание, зачеркивание, набор символов, точность вывода, точность отсечения, качество, интервал и семейство, название)

Краткое описание параметров функции CreateFont() дано в табл. 19.1.

Таблица 19.1. Параметры

функции CreateFont()

Параметр

Описание

(int) высота

Высота символов в логических единицах

(int) ширина

Средняя ширина символов в логических единицах

(int) ориентация

Угол наклона строки (в десятых долях градуса) относительно горизонтальной оси; 0 - слева направо, 900 (90°) - по вертикали снизу вверх, 1800 (180°) - справа налево, 2700 (270°) - по вертикали сверху вниз

(int) наклон

Угол наклона символов (в десятых долях градуса) относительно горизонтальной оси; 0 - нормальное отображение, 900 - поворот на 90° против часовой стрелки, 1800 - перевернутое отображение, 2700 - поворот на 90° по часовой стрелке

(int) толщина

Толщина шрифта (от 0 до 1000); значение 400 (fw normal) соответствует нормальному начертанию, 700 (fw bold) - полужирному

(DWORD) курсив

Курсивное начертание, если параметр не равен нулю

(DWORD) подчеркивание

Подчеркивание символов, если параметр не равен нулю

(DWORD) зачеркивание

Зачеркивание символов, если параметр не равен нулю

(DWORD) набор символов

Набор символов; возможные константы: ANSI CHARSET- стандартные ANSI-символы, oem charset - системно-зависимый набор, russian charset- русские символы, hebrew charset- иврит и т.д.

(DWORD) гочность вывода

Допустимая степень соответствия подобранного системой физического шрифта заданным установкам; некоторые из возможных констант: out default precis - стандартный режим подстановки, out tt precis- при наличии нескольких шрифтов с одинаковым названием выбирается контурный (TrueType), out device precis- при наличии нескольких шрифтов с одинаковым названием выбирается аппаратный

(DWORD)

гочность отсечения

Способ отсечения символов, частично выходящих за границы области отсечения; возможные константы: clip default precis- стандартный режим, clip character precis- отсекается весь символ, clip stroke precis- отсекается часть символа (с точностью до штриха) и т.д.

(DWORD) качество

Требуемое качество выводимого шрифта; возможные константы: default quality- вид шрифта не имеет значения, draft quality- качество вывода играет минимальную роль, допускается масштабирование растровых шрифтов, PROOF QUALITY- качество вывода важнее, чем соответствие логическим атрибутам шрифта, а масштабирование растровых шрифтов недопустимо - выбирается наиболее близкий по размеру шрифт

(DWORD)

интервал и семейство

В двух младших битах задается межсимвольный интервал шрифта; возможные константы: default pitch - интервал не известен или не имеет значения, fixed pitch- фиксированный интервал, fixed pitch- переменный интервал (пропорциональный шрифт). В четырех старших битах определяется семейство, к которому относится шрифт; возможные константы: ff dontcare- семейство не известно или не имеет значения, ff roman- шрифт с засечками, с переменной шириной символов, FF SWISS- шрифт без засечек, с переменной шириной символов, ff modern- шрифт с постоянной шириной символов, с

засечками или без таковых FF SCRIPT- шрифт напоминающий рукописный



]ff decorative- декоративный шрифт

(LPCTSTR) название Строка, содержащая название гарнитуры шрифта

При первом вызове функции CreateFont() создается пропорциональный полужирный шрифт размером в 12 логических единиц. По этой команде Windowsпытается найти среди установленных шрифтов такой, который максимально точно отвечает запрашиваемым параметрам. Этот шрифт используется для вывода заголовка гистограммы, подписи к горизонтальной оси и метки, обозначающей максимальный размер столбца.

Во второй раз функция CreateFont() вызывается следующим образом:

newfont.CreateFont(12,12,900,900,FW BOLD,

FALSE, FALSE, FALSE, OEM CHARSET, OUT DEFAULT PRECIS,

CLIP DEFAOLT PRECIS, DEFAULT QDALITY, VARIABLE PITCH FF ROMAN, Roman );

Как видите, изменены только параметры ориентации строки и наклона символов. Оба параметра измеряются в десятых долях градуса, поэтому наклону в 90 градусов соответствует значение 900. Этот шрифт используется для вывода подписи к вертикальной оси гистограммы. А вот как осуществляется вывод строки:

oldfont = dc.SelectObject(Snewfont);

dc.TextOut(50, 200+(strlen(szXString)*10/2), szYString, strlen(szYString));

Рисование осей координат и столбцов

Координатные оси х и у выводятся на экран с помощью функций MoveTo() и LineTo():

Рисование осей координат

dc.MoveTo(99,49);

dc.LineTo(99,350);

dc.LineTo(500,350); dc.MoveTo(99,350);

Затем выполняются действия по подготовке к выводу столбцов гистограммы. Как видно из следующего фрагмента программы, первый столбец всегда начинается с точки 100,350, на что указывают значения переменных x1 и у1. Горизонтальная координата всех последующих столбцов вычисляется на основании координаты предыдущего столбца и ширины столбцов.

Начальные значения

xl= 100; yl = 350;

х2 = xl + iBarWidth;

Информация о высоте столбцов хранится в массиве iBarSizeScaled. Поскольку функция Rectangle() создает замкнутые фигуры, то полученный столбец можно заполнить цветом, воспользовавшись текущей кистью. Цвет кисти выбирается из массива dwColor, причем номер столбца соответствует номеру цвета в массиве.

Рисование столбцов for(i= 0; i < iNBars;

newbrush.CreateSolidBrush(dwColor[ i ]) ; oldbrush = dc.SelectObject(Snewbrush); y2 = 350 - iBarSizeScaledfi]; dc.Rectangle(xl,yl,x2,y2);

xl = x2;

x2 +- iBarWidth;

удаление кисти

dc.SelectObject(oldbrush);



newbrush.DeleteObject() ; }

После того как программа выведет один столбец, значения переменных x1 и х2 будут модифицированы таким образом, чтобы указывать на начальную точку следующего столбца. Цикл, for выполняется столько раз, сколько столбцов содержит гистограмма.

Запуск программы

После запуска программы на экране отображается гистограмма, заданная по умолчанию (рис. 19.11). Теперь можно создать свою гистограмму, вроде той, что показана на рис. 19.12. Для этого необходимо ввести заголовок и подписи к осям, а также значения для столбцов.


Рис. 19.11. Гистограмма, выводимая аналогичной программой по умолчанию



1 ... 114 115 116 [ 117 ] 118 119 120 ... 150

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика