Home

Page 107
Page 107
background image

100 Глава 3

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

дыркой внутри. Для этого модернизируем код следующим образом:

procedure

var

begin

 ,

 ,

 )

 True) ;

end;

В первой строке создается уже знакомая овальная область. Результат сохра-

няется в переменной EllipseRgn. После этого создается квадратная область

с помощью

 createRectRgn. У этой функции также четыре

параметра, указывающие размеры прямоугольника. Этот результат сохраня-

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

 У этой функции четыре параметра:

 Переменная области, в которую будет записан результат. Здесь указана

область эллипса, хотя можно выделить под это дело и отдельную пере-

менную типа

 HRGN.

• Первая область, которую нужно скомбинировать.

 Вторая область, которую нужно скомбинировать.

• Режим слияния. Здесь можно указать один из следующих вариантов:

 AN — область перекрывания;

 копия первой области;

 — удаление второй области из первой;

 — объединение областей;

 — объединение областей, исключая все пересечения.

Для примера использован режим

 который удаляет прямоугольную

область из овальной. Результат сохраняется в переменной EllipseRgn, кото-
рая потом назначается форме. На рис. 3.10 показано мое результирующее

На компакт-диске в директории \Примеры\Глава 3\Eilipse Window2 вы мо-

жете увидеть пример этой программы.


Copyright © 2020 Файлообменник files.d-lan.dp.ua

Использование любых материалов сайта возможно только с разрешения автора.