Прототип к варианту 12 - Отсечение_1

Страницы работы

Содержание работы

Прототип к варианту 12 - Отсечение_1

В Windows существует немало функций, управляющих процессом рисования в контекстах устройств. Для таких функций необходим механизм, позволяющий определять области в контекстах устройств.

Регионы

Регионы (regions) играют важную роль при управлении контекстами устройств — по аналогии с прямоугольниками, используемыми во многих управляющих функциях Windows. Регион представляет собой объект GDI, описывающий некоторую область в контексте устройства. С каждым регионом связан собственный манипулятор объекта. Когда надобность в регионе отпадает, его, как и любой объект GDI, следует удалить функцией DeleteObject (см. главу 8). Регион может представлять собой простой прямоугольник или быть сколь угодно сложным. Он может состоять из нескольких частей, не соприкасающихся друг с другом, а также включать многоугольники и круги.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    

При работе с регионами необходимо помнить об одном важном обстоятельстве: в функциях регионов всегда используются клиентские координаты. В процессе построения графического вывода Windows применяет все координатные Преобразования (мировые в логическое окно, логическое окно в область просмотра), а затем проверяет каждый пиксел на принадлежность к об-ла- сти отсечения, чтобы узнать, следует ли выводить его. Как было показано выше, вы можете рисовать за пределами области просмотра (см. .рис. 7.7 и пример Viewport). Если вы хотите ограничить вывод границами области просмотра, все, что для этого необходимо, — создать прямоугольный регион, совпадающий с областью просмотра, и выбрать его в качестве текущей области отсечения.

Но что делать, если вам потребовалось создать сложный графический объект (аналог региона) для рисования в логических координатах? Для решения этой задачи в Win32 появился новый графический объект, называемый траекторией (path), — но эта тема рассматривается в главе 8.

Функции для создания регионов и операций с ними перечислены в табл. 7.11.

Таблица 7.11. Функции регионов

Функция

Описание

CombineRgn

Комбинирует два региона Заданным способом

CreateEllipticRgn CreateEllipticRgnlndirect

Создает круглые и эллиптические регионы

CreatePolygonRgn CreatePolyPolygonRgn

Создает регион на основе одного или нескольких многоугольников

CreateRectRgn CreateRectRgnlndirect

Создает прямоугольные регионы

CreateRoundRectRgn

Создает регион на основе прямоугольника с закругленными краями

EqualRgn

Проверяет, совпадают ли два региона

ExtCreateRegion

Позволяет применить преобразование к региону

GetRgnBox

Получает прямоугольник, вмещающий заданный регион

GetRegionData

Получает данные, описывающие регион

OffsetRgn

Смещает регион

PtlnRegion

Проверяет, принадлежит ли точка заданному региону

RectlnRegion

Проверяет, принадлежит ли какая-либо часть прямоугольника заданному региону

SetRectRgn

Изменяет заданный регион так, чтобы он описывал прямоугольную область

Отсечение

Графический вывод в контексте устройства может быть ограничен некоторыми участками логического окна. Это интуитивно ясно из того факта, что при рисовании на форме Visual Basic графика не рисуется поверх элементов формы, если только отсечение не было явно отменено переводом свойства ClipControls в состояние FALSE. Windows исключает область, занимаемую элементами, из общей области вывода в контексте устройства формы. Этот процесс называется отсечением, а область, в которой разрешен вывод, называется областью отсечения. Отсечение также может применяться во время рисования для создания разнообразных графических эффектов. Эта возможность продемонстрирована в проекте Region, который будет описан ниже в этой главе.

Похожие материалы

Информация о работе