- •Программирование в среде windows.
- •Графические функции gdi и средства gdi
- •Аппаратная независимость
- •Файл определения модуля.
- •Сообщения.
- •Диалоговые панели
- •Органы управления
- •Контекст.
- •Атрибуты контекста отображения
- •Цвет фона.
- •Режим фона.
- •Режим рисования.
- •Начальные координаты кисти.
- •Режим закрашивания многоугольников.
- •Текущая позиция пера.
- •Изображение bitmap.
- •Режим растяжения.
- •Область ограничения.
- •Режим отображения.
- •Начало системы координат для окна.
- •Начало системы физических координат.
- •Шрифты.
- •Физическая система координат.
- •Логическая система координат.
- •Преобразование координат.
- •Режимы отображения.
- •Режим mm_text.
- •Метрические режимы отображения.
- •Режимы mm_isotropic и mm_anisotropic
- •Рисование геометрических фигур
- •Рисование точки
- •Рисование линий
- •Текущая позиция пера
- •Рисование прямой линии
- •Рисование ломаной линии
Шрифты.
Операционная система Windows может работать с растровыми, векторными и масштабируемыми шрифтами. Кроме этого, приложения Windows могут использовать шрифты, встроенные в устройство вывода (обычно это принтерные шрифты).
Растровые шрифты содержат битовые образы всех символов. Для каждого размера шрифта необходимо иметь свой набор символов. Кроме того, различные устройства вывода имеют разное соотношение горизонтальных и вертикальных размеров пикселя, что приводит к необходимости хранить отдельные наборы образов символов не только для разных размеров шрифта, но и для разного соотношения размеров пикселя физического устройства отображения.
Растровые шрифты плохо поддаются масштабированию, так как при этом наклонные линии контура символа принимают зазубренный вид.
Векторные шрифты хранятся в виде набора векторов, описывающих отдельные сегменты и линии контура символа, поэтому они легко масштабируются. Однако их внешний вид далек от идеального. Как правило, векторные шрифты используются для вывода текста на векторные устройства, такие, как плоттер.
Масштабируемые шрифты TrueType впервые появились в Windows версии 3.1 и сильно повлияли на рост популярности этой операционной системы. Шрифты True Type поддаются масштабированию без существенных искажений внешнего вида.
Рис. иллюстрирует ухудшение внешнего вида растрового и векторного шрифтов при увеличении размера букв до величины 40 пунктов. Внешний вид масштабируемого шрифта не ухудшился.
Рис. Растровый, векторный и масштабируемый шрифты
В состав операционной системы Windows входит не очень большое количество шрифтов, однако при необходимости вы можете приобрести дополнительные шрифты как отдельно, так и в составе различного программного обеспечения. Помимо обычных шрифтов существуют символьные или декоративные шрифты, содержащие вместо букв различные пиктограммы.
Физические и логические координаты.
Физические координаты, как это следует из названия, имеют непосредственное отношение к физическому устройству вывода. В качестве единицы измерения длины в системе физических координат всегда используется пиксель. Если устройством вывода является экран монитора, физические координаты обычно называют экранными координатами.
Логические координаты передаются функциям GDI, выполняющим рисование фигур или вывод текста. Используемые единицы измерения зависят от режима отображения.
При отображении GDI преобразует логические координаты в физические. Способ преобразования зависит от режима отображения и других атрибутов контекста отображения, таких как расположение начала системы координат для окна, расположение начала системы физических координат, масштаб осей для окна и масштаб осей физических координат.
Физическая система координат.
На рис. показана физическая система координат для экрана видеомонитора.
Рис. Физическая система координат для экрана видеомонитора
Для того чтобы определить физическое разрешение устройства вывода (например, размер экрана в пикселях по вертикали и горизонтали), следует использовать функцию. Если передать в качестве второго параметра этой функции значения VERTRES и HORZRES , она в любом режиме отображения вернет, соответственно, размер экрана в пикселах по вертикали и по горизонтали. Параметр hdc должен указывать информационный контекст или контекст отображения, связанный с экраном монитора:
HDC hdc;
int iVertRes, iHorzRes;
hdc = CreateDC("DISPLAY", NULL, NULL, NULL);
iVertRes = GetDeviceCaps(hdc, VERTRES);
iHorzRes = GetDeviceCaps(hdc, HORZRES);
DeleteDC(hdc);
Физическая система координат "привязана" к физическому устройству вывода, поэтому при ее использовании для вывода изображения следует учитывать особенности видеоконтроллера.
Параметр функции GetDeviceCaps |
SVGA 800 x 600 |
8514/A |
SVGA 1024 x 768 |
HORZRES |
800 |
1024 |
1024 |
VERTRES |
600 |
760 |
768 |
HORZSIZE |
208 |
280 |
208 |
VERTSIZE |
152 |
210 |
152 |
ASPECTX |
36 |
10 |
36 |
ASPECTY |
36 |
14 |
36 |
ASPECTXY |
51 |
14 |
51 |
LOGPIXELSX |
96 |
120 |
96 |
LOGPIXELSY |
96 |
120 |
96 |
Из этой таблицы видны недостатки физической системы координат.
Во - первых, вертикальное (VERTRES) и горизонтальное (HORZRES) разрешение зависит от типа видеоконтроллера.
Во - вторых, физические размеры пикселей (ASPECTX и ASPECTY ), и, что самое главное, отношение высоты и ширины пикселя также зависят от типа видеоконтроллера.
Если приложению требуется нарисовать, например, окружность или квадрат, при использовании физической системы координат придется учитывать форму пикселей, выполняя масштабирование изображения по одной из осей координат. В противном случае вместо окружности и квадрата на экране появятся эллипс и прямоугольник.