Delphi. Трюки и эффекты - страница 58

Шрифт
Интервал

стр.

• Битовые массивы (bitmaps) – прямоугольные массивы точек, формирующие растровые изображения.

• Карандаши (pens) – используются для задания таких параметров рисования линий, как толщина, цвет и стиль (сплошная, прерывистая и т. п.).

• Кисти (brushs) – применяются для задания таких параметров заливки замкнутых контуров, как цвет и стиль.

• Шрифты (fonts) – позволяют задавать параметры вывода текста, включая имя шрифта, размер символов и т. д.

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

• Логические палитры (logical palettes) – осуществляют интерфейс между приложением и таким цветным устройством вывода, как дисплей, содержат список цветов, необходимых приложению.

• Контуры (paths) – используются для заполнения или выделения контура различных фигур.

6.2. Аппаратно-независимый графический вывод

Одна из главных особенностей Windows API – независимость графического вывода от устройства. Программное обеспечение, которое поддерживает независимость, содержится в двух динамически компонуемых библиотеках. Первая – gdi. dll – обеспечивает общий графический интерфейс устройства (Graphics Device Interface, GDI), а вторая является драйвером конкретного используемого устройства. В результате приложение использует тот интерфейс, который предоставляется первой библиотекой. Перед тем как произвести какую-либо операцию вывода на некоторое устройство, приложению необходимо запросить GDI о загрузке соответствующего драйвера (обычно это осуществляется автоматически и не требует дополнительных действий со стороны программиста). После загрузки соответствующего драйвера приложение может настроить ряд таких параметров вывода, как цвет линии и ее ширина, тип кисти и ее цветщрифт, область отсечения и т. д. Операционная система Windows обеспечивает хранение всех этих и других данных в специальной структуре, называемой контекстом устройства.

Стоит заметить, что GDI реализует интерфейс для рисования двухмерной графики. Это самый медленный способ отображения графики из существующих, однако самый простой для понимания основ. Используется он в основном для создания простых эффектов с минимальными усилиями.

6.3. Контекст устройства

Контекст устройства – структура, определяющая набор графических объектов и связанных с ними атрибутов и графических режимов, которые воздействуют на вывод. Графические объекты включают карандаши для рисования линий, кисти для закрашивания и заполнения, битовые образы для копирования или прокрутки части экрана, цветовые палитры для определения набора доступных цветов, области для отсечения и других операций, а также контуры для операций рисования и закрашивания.

Приложение не имеет прямого доступа к контексту устройства, и настройка параметров осуществляется посредством вызова соответствующих функций Win32 API.

Существуют четыре типа контекстов устройств:

• экранный – поддерживает операции рисования непосредственно на экране;

• принтера – поддерживает операции рисования непосредственно на принтере или плоттере;

• памяти – поддерживает операции рисования непосредственно в битовых массивах;

• информационный – поддерживает получение данных об устройстве.

Приложение может осуществлять следующие операции над контекстом устройства:

• перечисление существующих графических объектов;

• выбор новых графических объектов;

• удаление существующих графических объектов;

• сохранение графических объектов, их атрибутов и параметров графических режимов;

• восстановление графических объектов, их атрибутов и параметров графических режимов.

Помимо всего прочего, приложение может использовать контекст устройства для определения процесса графического вывода, прерывания длительных графических операций, начатых другим потоком многопоточного приложения, а также может инициализировать принтер.

Экранный контекст устройства

Приложение получает контекст устройства экрана посредством вызова функций BeginPaint, GetDC или GetDCEx. Полученный контекст устройства идентифицирует окно, в которое будет непосредственно осуществляться вывод. Как правило, приложение получает контекст устройства экрана непосредственно перед тем, когда ему необходимо рисовать в клиентской области. Когда приложение завершает вывод, то оно обязано освободить контекст устройства, вызвав одну из соответствующих функций: EndPaint или ReleaseDC.


стр.

Похожие книги