Читаем Delphi. Трюки и эффекты полностью

1.4. Окна и кнопки нестандартной формы

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

Регионы. Создание и использование

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

Однако использование прямоугольных регионов для указания областей отсечения совсем не обязательно. Использование отсечения по заданному непрямоугольному региону при рисовании произвольного окна наглядно представлено на рис. 1.3: а – изначальный прямоугольный вид формы;

б – используемый регион, формирующий область отсечения; в – настоящий вид формы в результате рисования с отсечением по границам заданного региона.

Рис. 1.3. Использование области отсечения при рисовании окна

Рассмотрим операции, позволяющие создавать, удалять и модифицировать регионы. Создание и удаление регионов Создать регионы различной формы можно с помощью следующих API-функций:

...

function CreateRectRgn(p1, p2, p3, p4: Integer): HRGN;

function CreateEllipticRgn(p1, p2, p3, p4: Integer): HRGN;

function CreateRoundRectRgn(p1, p2, p3, p4, p5, p6: Integer): HRGN;

Все перечисленные здесь и ниже функции создания регионов возвращают дескриптор GDI-объекта «регион». Он впоследствии и передается в различные функции, работающие с регионами.

Итак, первая из приведенных функций (CreateRectRgn) предназначена для создания регионов прямоугольной формы. Параметры этой функции необходимо толковать следующим образом:

• p1 и р2 – горизонтальная и вертикальная координаты левой верхней точки прямоугольника;

• р3 и р4 – горизонтальная и вертикальная координаты правой нижней точки прямоугольника.

Следующая функция – CreateEllipticRgn – предназначена для создания региона эллиптической формы. Параметры этой функции – координаты прямоугольника (аналогично CreateRectRgn), в который вписывается эллипс.

Третья функция – CreateRoundRectRgn – создает регион – прямоугольник с округленными углами. При этом первые четыре параметра функции аналогичны соответствующим параметрам функции CreateRectRgn. Параметры р5 и рб – ширина и высота сглаживающих углы эллипсов (рис. 1.4).

Трех приведенных функций достаточно даже в том случае, если нужно создавать регионы очень сложной формы. Это достигается при помощи многочисленных операций над простыми регионами, как в приведенном далее примере создания региона по битовому шаблону. Однако рассмотрим еще одну несложную функцию, которая позволяет сразу создавать регионы-многоугольники по координатам точек – вершин многоугольников:

...

function CreatePolygonRgn(const Points; Count, FillMode: Integer): HRGN;

Рис. 1.4. Округление прямоугольника функцией CreateRoundRectRgn

Функция CreatePolygonRgn принимает следующие параметры:

• Points – указатель на массив записей типа TPoint, каждый элемент массива описывает одну вершину многоугольника, координаты не должны повторяться;

• Count – количество записей в массиве, на который указывает Points;

• FillMode – режим заливки региона (в данном случае, попадает ли внутренняя область многоугольника в регион).

Параметр FillMode принимает значения WINDING (попадает любая внутренняя область) или ALTERNATE (попадает внутренняя область, если она находится между нечетной и следующей четной сторонами многоугольника).

...

Перейти на страницу:

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

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT