Графический приборный интерфейс GDI. Состав, назначение.
Графический приборный интерфейс, или GDI (Graphics Device Interfасе), является связующим звеном между программой и графическим устройством вывода и служит для представлении программой визуально ориентированной информации пользователю. GDI представляет собой библиотеку процедур, которые обеспечивают создание графического интерфейса и управление им. Эта библиотека доступна как для Windows так и для любой прикладной программы (для пользователя).
Составные части:
1) Display Context.
Это либо контекст устройства, либо программный контекст (контекст устройства, контекст отображения - dispaly context или device context). Представляет собой некоторую структуру, в которой записаны состояния устройства и состояния графических средств. Используется, так как слишком много параметров описывают даже простейшую фигуру.
К примеру, для рисования на экране простого объекта (прямоугольника), необходима следующая информация: размеры (длина, ширина), тип линии контура (сплошная, штриховая), взаимодействие с другими окнами, фоном (прозрачность, передний план и т.п.), разрешение и другое.
Есть параметры, которые записываются в контекст отображения по умолчанию (средства (ресурсы)). Эти параметры не модифицируемы (должны быть восстановлены).
А) Отсекание – запрет вывода информации за пределы рабочего окна; регламентирует поведение фигур, которые накладываются друг на друга. GDI управляет своими функциями таким образом, чтобы не допустить графического вывода вне границ окна, которое использует функции GDI. Действие функций графического вывода ограничено областью отсекания.
Windows устанавливает параметры области отсекания перед передачей его прикладной программе. Как уже отмечалось, в Windows для программы имеются две возможности получения доступа к DC: функции BeginPaint и GetDC. При использовании функции BeginPaint размеры области отсекания будут содержать именно тот участок рабочей области окна, который должен быть обновлен. В случае использования функции GetDC область отсекания охватывает всю рабочую область окна.
Б) Масштабирование – разница в реакции программы на изменение размеров окна.
Программа может реагировать на увеличение или уменьшение размеров окна по-разному, хотя и Windows самостоятельно проводит всю работу, связанную с изменением размеров окна
Возможность масштабирования является необходимой для Windows, поскольку позволяет использовать одни и те же графические функции, независимо от размеров окна.
В Windows существуют 8 методов (по лекциям – 6!) масштабирования.
2) Графические функции GDI – набор стандартных функций:
· Определяют положение внутри рабочей области
· Операции с точками экрана
· Рисование текста, линий, фигур
· Заполнение фигур, областей
· Работа с битовыми массивами
· Рисование пиктограмм
3) Средства (ресурсы)GDI – шрифты, кисти, перья, которые можно выбрать при рисовании. Они являются не модифицируемыми. Изменить ресурсы мы не имеем права. Кроме того, программист может создавать с помощью функций Windows и специальных программ свои собственные графические средства, например, шрифты. Но, независимо от источника возникновения, все графические средства должны находиться в DC, чтобы графические функции GDI могли их использовать. В DC имеется возможность хранения только одного экземпляра каждого графического средства.
38. Контекст, содержание контекста.
Контекст – структура, в которой по умолчанию находятся значения для отображения.
Контекст отображения представляет собой структуру в памяти, описывающую окно.
В этой структуре находятся такие характеристики окна, используемые для вывода в него текста и графических изображений – атрибуты контекста отображения. Весь вывод в окно должен выполняться с использованием функций интерфейса графических устройств GDI, составляющих подмножество программного интерфейса Windows. Устанавливаются изначально значения по умолчанию.
Атрибуты контекста отображения (20 атрибутов)
1) Цвет фона (по умолчанию – белый цвет, функция – SetBkClr)
2) Режим фона – позволяет переустанавливать режим фона (прозрачный (TRANSPERENT)/непрозрачный (OPAQUE) – по умолчанию; функция – SetBkMode)
3) Режим рисования (по умолчанию – берется у инструмента, выбранного для рисования; новое изображение полностью замещает исходное, других режимов – десятки (можно использовать логические операции при рисовании); функция – SetROP2)
4) Цвет текста (по умолчанию – черный цвет, функция – SetTextColor,вывод - TextOut)
5) Шрифт (по умолчанию – системный, функции - SelectObject, CreateFont[Indirect])
6) Расстояния между символами (по умолчанию – 0, функция – SetTextCharacterExtra)
7) Цветовая палитра – таблица, в которой записаны цвета (обычно ограничено 255)
(функции – CreatePalette, SelectPalette, RealizePalette)
8) Кисть (по умолчанию – белый цвет, размер 8х8 пикселей, для закрашиванию замкнутых областей; функции – CreateSolidBrush, CreateHatchBrush, SelectObject, …)
9) Начальные координаты кисти (по умолчанию – (0,0), функция –SetBrushOrg, UnrealizeObject)
10) Режим закрашивания многоугольников (по умолчанию – ALTERNATE (заполняются области между четными и нечетными сторонами), также есть – WINDING(режим заполнения), функция - SetPolyFillMode)
11) Перо (по умолчанию – толщина 1 пиксель; цвет черный, функции – CreatePen[Indirect], SelectObject(более универсальная); толщину можно менять только для обычной линии)
12) Текущая толщина пера (по умолчанию – (0,0), функция –MoveTo, LineTo)
13) Изображение bitmap(нет по умолчанию, функции – SelectObject, CreateBitMap[Indirect])
14) Режим растяжки – увеличение/уменьшение размера битового массива, растяжение приводит к резкому ухудшению изображения (функция – StrechBlt,
режим BLACKONWHITE (по умолчанию; превалирует черный цвет («ИЛИ»))
режим WHITEONBLACK (превалирует белый цвет («И»)))
15) Область ограничения (по умолчанию – совпадает с областью вывода,
функции – CreateEllipticRgn, CreatePolygonRgn, CreateRectRgn, CreateClipRgn, …)
16) Режим отображения (по умолчанию – MM_TEXT, функция изменения системы координат - SetMapMode,в WindowsNT можно использовать наклонные системы координат)
17) Начало системы логических координат (по умолчанию – (0,0), функция - SetWindowOrg)
18) Начало системы физических координат (по умолчанию – (0,0), функция - SetViewportOrg)
19) Масштаб осей окна (по умолчанию – 1:1, функция - SetWindowExt)
20) Масштаб физических координат (по умолчанию – 1:1, функция - SetViewortExt)
Контекст устройства (device context), относящийся ко всей поверхности экрана видеомонитора, позволит выводить текст или графические изображения в любое место экрана.
Представляет собой структуру данных, связанная с тем или иным устройством ввода/вывода. Контекст устройства определяет различные параметры, используемые при работе с устройством, аналогично контексту отображения. В этом контексте хранится режим отображения, то есть указывается способ, с помощью которого логические координаты отображаются в физические.
Способы получения (и, соответственно, освобождения) контекста отображения разные для контекстов разного типа. Можно выделить следующие типы контекста отображения (свои особенности и назначение):
· общий контекст отображения (common display context);
· контекст отображения для класса окна (class display context);
· личный контекст отображения (private display context);
· родительский контекст отображения (parent display context);
· контекст отображения для окна (window display context);
· контекст физического устройства (device context);
· информационный контекст (information context);
· контекст для памяти (memory device context);
· контекст для метафайла (metafile context).