Delphi. Трюки и эффекты. Александр Чиртик
Чтение книги онлайн.

Читать онлайн книгу Delphi. Трюки и эффекты - Александр Чиртик страница 5

Название: Delphi. Трюки и эффекты

Автор: Александр Чиртик

Издательство:

Жанр: Программы

Серия:

isbn: 978-5-911-80219-6

isbn:

СКАЧАТЬ мы рассмотрим некоторые стандартные возможности 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 СКАЧАТЬ