Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_4(моя).doc
Скачиваний:
6
Добавлен:
18.08.2019
Размер:
442.37 Кб
Скачать

Отсеченный путь

Подобно региону отсечения, отсеченный путь - это другой графический объект, который приложение может выбрать в контексте устройства. В отличие от региона отсечения, отсеченный путь всегда создается приложением, и он используется для того, чтобы отсечь одну или несколько неправильных форм. Например, приложение может использовать линии и кривые, которые формируют контуры символов в строке текста, чтобы определить отсеченный путь.

Чтобы создать отсеченный путь, сначала необходимо создать путь, который описывает требуемую неправильную форму. Пути создаются, путем вызова соответствующей функции рисования графического интерфейса устройства (GDI) после вызова функции BeginPath и перед вызовом функции EndPath. Эту совокупность функций называют группой пути (path bracket).

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

Следующая таблица описывает режимы использования.

Режим

Описание

RGN_AND

Отсеченный путь включает в себя пересечение (области перекрытия) региона отсечения контекста устройства и текущего пути.

RGN_COPY

Отсеченный путь - текущий путь.

RGN_DIFF

Отсеченный путь включает в себя регион отсечения контекста устройства с какой-либо пересекающимися частями текущего исключенного пути.

RGN_OR

Отсеченный путь включает в себя союз (объединенные области) региона отсечения контекста устройства и текущего пути.

RGN_XOR

Отсеченный путь включает в себя союз региона отсечения контекста устройства и текущего пути, но исключает пересечение.

Контекст дисплея

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

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

Приватный контекст в отличие от общего сохраняет все изменения даже после того, как прикладная программа освободила его. Приватный контекст не хранится в КЭШе, поэтому программа может не освобождать его. Память для приватного контекста выделяется системой специально для данного приложения. Для работы с приватным контекстом необходимо при регистрации класса окна указать стиль CS_OWNDC. Система сама удаляет приватный контекст в том случае, когда удаляется окно.

При работе с контекстами хэндлы контекста устройства с помощью функции BeginPaint() необходимо получать только в случае обработки сообщения WM_PAINT. Во всех остальных случаях необходимо использовать функции GetDC() или GetDCEx().

Для получения дескриптора контекста дисплея можно использовать два метода:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]