Окно в виде кольца

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Умея создавать окно эллипсовидной формы, для вас не составит большого труда слепить что-нибудь наподобие того, что показано на рисунке. Всё, что вам нужно сделать — это создать не один, а два региона и объединить их, используя функцию CombineRgn, т.е. теперь по созданию окна можно написать что-то вроде этого:

procedure TForm1.FormCreate(Sender: TObject);

var

hsWindowRegion, hsWindowRegion2: Integer;

begin

hsWindowRegion := CreateEllipticRgn(50, 50, 350, 200);

hsWindowRegion2:=CreateEllipticRgn(80, 80, 200, 150);

CombineRgn(hsWindowRegion, hsWindowRegion, hsWindowRegion2, RGN_DIFF);

SetWindowRgn(Handle, hsWindowRegion, true);

end;

Мы уже знаем какую функцию нужно использовать для объединения регионов, но как же она действует и что же ей нужно указывать?

Вводятся следующие параметры:

Дескриптор региона назначения,

Дескриптор первого региона источника,

Дескриптор второго региона источника,

Режим взаимодействия регионов источников.

В качестве режима мы указали константу RGN_DIFF, а использовать можем:

RGN_AND — Создает пересечение из двух смешанных областей,

RGN_COPY — Создает копию области, идентифицированной дескриптором первой области источника,

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

RGN_OR — Создает объединение двух смешанных областей,

RGN_XOR — Создает объединение двух смешанных областей за исключением зоны перекрытия.

{/codecitation}

Добавить комментарий