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

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

Пример: Region

Читатели предыдущего (16-разрядного) издания наверняка заметили, что в этой книге кроме 32-разрядных версий исходных примеров появилось много новых приложений. В данном случае исходная программа Clip View полностью исчезла из книги и была заменена более интересной программой, демонстрирующей работу с регионами. Пример Region показывает, как создавать регионы, как комбинировать их и выполнять отсечение для создания интересных графических эффектов. На рис. 7.11 изображена главная форма программы Region, а на рис. 7.12 показан результат нажатия кнопки Combine and Clip Selected.

Использование приложения Region

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

Если щелкнуть на кнопке Combine and Clip Selected, все выделенные регионы объединяются в комплексный регион, который выбирается в качестве области отсечения формы frmCombine. Обработчик события Paint этой формы рисует на форме серию горизонтальных линий. Линии автоматически обрезаются по границам области отсечения. Полученный результат показан на рис. 7.12. При нажатии кнопки Combine and Fill Selected регионы объединяются и заполняются цветной заливкой.

Рис. 7.11. Главная форма примера Region

Рис. 7.12. Графические эффекты, создаваемые посредством отсечения

Описание проекта и формы

Проект Region состоит из трех файлов (листинги 7.6, 7.7 и 7.8). Файл REGION. FRM определяет главную форму проекта. Форма FRMCOMB. FRM используется для демонстрации эффекта объединения регионов, a MODREG.BAS содержит объявления констант и функций API. Программа Region написана таким образом, что она работает как в 16-, так и в 32-разрядных версиях Visual Basic; перед вами еще один пример программного кода, работающего на обеих платформах.

В большинстве случаев в Win 16 и Win32 используются одни и те же константы. Если вы генерируете объявления констант и функций при помощи надстройки ListAPI, прилагаемой к книге, возможно, некоторые команды условной компиляции для идентичных констант можно будет убрать. Учтите, однако, что из-за природы условной компиляции это приведет лишь к уменьшению объема исходного текста. Сокращение никак не повлияет на размер исполняемого файла, поскольку константы, не входящие в область действия текущей компиляции, попросту игнорируются.

Как и во многих примерах этой книги, мы используем свойство ScaleMocie для назначения пиксельного режима, чтобы упростить комбинированный вызов функций Visual Basic с функциями API.

Листинг 7.7. REGION.FRM