Графический интерфейс GDI в Microsoft Windows
© Александр Фролов, Григорий Фролов
Том 14, М.: Диалог-МИФИ, 1993, 288 стр.
1. Основные понятия
Интерфейс графических устройств GDI
операционной системы Microsoft Windows (в дальнейшем -
просто GDI), как это можно предположить из
названия, предназначен для взаимодействия
приложений Windows с графическими устройствами,
такими как видеомонитор, принтер или плоттер.
Когда приложения обращаются к GDI для выполнения
операции вывода графического изображения, они
работают не с реальными (физическими)
устройствами вывода, а с логическими. Приложения
Windows не определяют тип видеомонитора (EGA, VGA или
SVGA), а работают с логическим видеомонитором,
имеющим феноменальные характеристики:
способность отображать практически любой цвет,
огромное разрешение и т. д. Выполняя запрос
приложения, GDI обращается к драйверу
соответствующего устройства вывода. Драйвер
работает непосредственно с физическим
устройством вывода. В процессе выполнения
запроса GDI (или драйвер) учитывает ограниченные
возможности физического устройства вывода и его
аппаратные особенности, делая необходимые
приближения.
Например, приложение может указать для цвета
линии любой из примерно 16 млн. цветов, однако
далеко не всякое устройство обладает таким
цветовым разрешением. В зависимости от типа
физического устройства, используемого для
вывода, GDI может выбрать для отображения цвет,
наиболее соответствующий запрошенному и
поддерживаемый устройством. Если устройство
вывода монохромное, вместо различных цветов
могут использоваться градации серого цвета.
Поэтому приложение может запросить для вывода
любой цвет, но для рисования будет использован
только такой, который есть на данном физическом
устройстве.
Такая ситуация, когда приложение запрашивает у
Windows одно, а получает другое, возникает не только
при работе с цветом. Приложение может запросить
для вывода шрифт, описав его характеристики. GDI
подберет для вывода наиболее подходящий (с его
точки зрения) шрифт, соответствующий описанию, и
предоставит его приложению.
На первый взгляд, это обескураживает, однако
такой механизм удобен для обеспечения
аппаратной независимости. Составляя программы
для MS-DOS, вы работали с видеоадаптерами, указывая
конкретные цвета и загружая в его память
конкретные шрифты из отдельных файлов. Поэтому
программы MS-DOS были крепко "привязаны" к
аппаратуре. Для использования новых
возможностей требовалось вносить изменения в
программы. Приложения Windows способны работать в
неизменном виде на любом оборудовании, лишь бы
был соответствующий драйвер. Чем лучше
используемая аппаратура, чем большими
возможностями она обладает, тем ближе будут
параметры полученного шрифта и цвета
соответствовать запрошенным.
Поэтому даже если сейчас в вашем распоряжении
есть только видеоконтроллер VGA, при разработке
приложений Windows вы можете не ограничивать себя
дюжиной цветов. Ваше приложение должно быть
сделано так, чтобы оно могло использовать любой
цвет. Со временем, когда у вас появится
видеоконтроллер True Color, экран вашего приложения
засветится всеми цветами радуги, причем для
этого не придется вносить никаких изменений в
само приложение.
Интерфейс GDI - одна из наиболее сложных
компонент Microsoft Windows версии 3.1. В Windows NT она
получила дальнейшее развитие, однако все базовые
понятия сохранились.
Из чего состоит интерфейс GDI с точки зрения
приложения?
Прежде всего, это контекст отображения и
инструменты для рисования. Контекст отображения
можно сравнить с листом бумаги, на котором
приложение рисует то или иное графическое
изображение, а также пишет текст. Инструменты для
рисования - это перья, кисти (а также шрифты и даже
целые графические изображения), с помощью
которых создается изображение. Кроме контекста
отображения и инструментов для рисования,
приложениям доступны десятки функций
программного интерфейса GDI, предназначенные для
работы с контекстом отображения и инструментами.
Если говорить более точно, контекст
отображения является структурой данных,
описывающей устройство отображения. В этой
структуре хранятся различные характеристики
устройства и набор инструментов для рисования,
выбранный по умолчанию. Приложение может
выбирать в контекст отображения различные
инструменты (например, перья различной толщины и
цвета). Поэтому если вам надо нарисовать линию
красного или зеленого цвета, перед выполнением
операции следует выбрать в контекст отображения
соответствующее перо.
Функции рисования не имеют параметров,
указывающих цвет или толщину линии. Такие
параметры хранятся в контексте отображения.
Приложение может создать контекст отображения
не только для экрана монитора или окна, но и для
любого другого графического устройства вывода,
например, для принтера. В последнем случае оно
может рисовать на принтере различные
изображения, используя те же функции, что и для
рисования на экране. Можно создать контекст
отображения для метафайла. Метафайл - это обычный
файл или файл в памяти, в котором хранятся
последовательности команд интерфейса GDI.
Приложение может выполнять графический вывод в
метафайл как в обычное устройство вывода, а затем
"проигрывать" метафайл на реальном
устройстве вывода.
Изучение интерфейса GDI мы начнем с подробного
описания контекста отображения и всех его
атрибутов (мы уже немного рассказывали вам о
контексте отображения в 11 томе "Библиотеки
системного программиста"). Затем мы займемся
инструментами для рисования и расскажем о
некоторых функциях программного интерфейса GDI,
предназначенных для рисования простейших
геометрических объектов, таких как точки, линии,
эллипсы, многоугольники и т. п.
|