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

Здесь есть возможность читать онлайн «Александр Чиртик - Программирование в Delphi. Трюки и эффекты» — ознакомительный отрывок электронной книги совершенно бесплатно, а после прочтения отрывка купить полную версию. В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Санкт-Петербург, Год выпуска: 2010, ISBN: 2010, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Программирование в Delphi. Трюки и эффекты: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Программирование в Delphi. Трюки и эффекты»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Как и все издания данной серии, эта книга адресована тем, кто хочет научиться делать с помощью уже знакомых программных пакетов новые интересные вещи. Издание будет полезно и новичкам, и опытным программистам. Автор описывает удивительные возможности, скрытые в языке, и на примерах учит читателя программистским фокусам – от «мышек-невидимок» и «непослушных окон» до воспроизведения MP3 и управления офисными программами Word и Excel из приложений Delphi. Купив эту книгу, вы пройдете непростой путь к вершинам программистского мастерства весело и интересно.

Программирование в Delphi. Трюки и эффекты — читать онлайн ознакомительный отрывок

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Программирование в Delphi. Трюки и эффекты», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

var a: Integer; //Сторона пятиугольника

begin

a:= width div 2;

points[0].X:= a;

points[0].Y:= 0;

points[1].X:= width – 1;

points[1].Y:= a div 2;

points[2].X:= 3 * (a div 2);

points[2].Y:= height – 1;

points[3].X:= a div 2;

points[3].Y:= height – 1;

points[4].X:= 0;

points[4].Y:= a div 2;

end;

Пятиугольная звезда, используемая как область отсечения формы, создается с помощью описанной в листинге 1.15 процедуры Make5Angle. После ее создания изменяется порядок следования вершин пятиугольника, чтобы их обход при построении региона выполнялся в той же последовательности, как рисуется звезда карандашом на бумаге (например, 1-3-5-2-4) (листинг 1.16).

Листинг 1.16. Создание пятиугольной звезды

procedure MakeStar(width, height: Integer; var points: array of TPoint);

begin

Make5Angle(width, height, points);

//При построении звезды точки пятиугольника обходятся не по порядку,

//а через одну

Swap(points[1], points[2]);

Swap(points[2], points[4]);

Swap(points[3], points[4]);

end;

Процедура MakeStart (листинг 1.16) использует дополнительную процедуру Swap, меняющую местами значения двух передаваемых в нее аргументов. Процедура Swap реализуется чрезвычайно просто и потому в тексте книги не приводится.

Комбинированные регионы

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

«Дырявая» форма

Этот простейший пример сомнительной полезности предназначен для первого знакомства с операциями над регионами. Здесь применяется только одна из возможных операций – операция XOR для формирования «дырок» в форме (рис. 1.8).

Рис 18 Дырки в форме На рис 18 явно видно как в дырках формы - фото 10

Рис. 1.8. «Дырки» в форме

На рис. 1.8 явно видно, как в «дырках» формы просвечивает одно из окон среды разработки Delphi. При этом, когда указатель находится над «дыркой», сообщения от мыши получают те окна, части которых видны в «дырке».

Программный код, приводящий к созданию формы столь необычного вида, приведен в листинге 1.17.

Листинг 1.17. Создание «дырок» в форме

procedure TfrmHole.FormCreate(Sender: TObject);

var

rgn1, rgn2: HRGN; //"Регионы-дырки" в форме

formRgn: HRGN;

begin

//Создание региона для формы

formRgn:= CreateRectRgn(0, 0, Width – 1, Height – 1);

//Создание регионов для "дырок"

rgn1:= CreateEllipticRgn(10, 10, 100, 50);

rgn2:= CreateRoundRectRgn(10, 60, 200, 90, 10, 10);

//Создание "дырок" в регионе формы

CombineRgn(formRgn, formRgn, rgn1, RGN_XOR);

CombineRgn(formRgn, formRgn, rgn2, RGN_XOR);

SetWindowRgn(Handle, formRgn, True);

//Регионы для "дырок" больше не нужны

DeleteObject(rgn1);

DeleteObject(rgn2);

end;

Сложная комбинация регионов

Теперь пришла очередь рассмотреть более сложный, но и гораздо более интересный пример. Последовательное применение нескольких операций над регионами приводит к созданию формы, показанной на рис. 1.9 (белое пространство – «вырезанные» части формы).

Рис 19 Сложная комбинация регионов Описание процедуры выполняющей операции - фото 11

Рис. 1.9. Сложная комбинация регионов

Описание процедуры, выполняющей операции над регионами, приведено в листинге 1.18.

Листинг 1.18. Сложная комбинация регионов

procedure TfrmManyRgn.FormCreate(Sender: TObject);

var

r1, r2, r3, r4, r5, r6, r7: HRGN;

formRgn: HRGN;

butRgn: HRGN;

begin

//Создание регионов

r1:= CreateRoundRectRgn(100, 0, 700, 400, 40, 40);

r2:= CreateRectRgn(280, 0, 300, 399);

r3:= CreateRectRgn(500, 0, 520, 399);

r4:= CreateEllipticRgn(140, 40, 240, 140);

r5:= CreateEllipticRgn(0, 300, 200, 500);

r6:= CreateEllipticRgn(500, 40, 600, 140);

r7:= CreateEllipticRgn(540, 40, 640, 140);

//Комбинирование

//..разрезы в основном регионе

CombineRgn(r1, r1, r2, RGN_XOR);

CombineRgn(r1, r1, r3, RGN_XOR);

//..круглая "дырка" в левой стороне

CombineRgn(r1, r1, r4, RGN_XOR);

//..присоединение круга в левой нижней части

CombineRgn(r1, r1, r5, RGN_OR);

//..создание "дырки" в форме полумесяца

CombineRgn(r7, r7, r6, RGN_DIFF);

CombineRgn(r1, r1, r7, RGN_XOR);

formRgn:= CreateRectRgn(0, 0, 0, 0);

CombineRgn(formRgn, r1, 0, RGN_COPY);

DeleteObject(r1);

DeleteObject(r2);

DeleteObject(r3);

DeleteObject(r4);

DeleteObject(r5);

DeleteObject(r6);

DeleteObject(r7);

//Создание круглой кнопки закрытия

butRgn:= CreateEllipticRgn(50, 50, 150, 150);

SetWindowRgn(Button1.Handle, butRgn, False);

SetWindowRgn(Handle, formRgn, True);

end;

В этом листинге подписано, какие операции предназначены для создания каких элементов итогового региона. В операциях участвуют семь регионов. Расположение используемых в операциях регионов показано на рис. 1.10.

Рис 110 Элементарные регионы используемые для получения формы - фото 12

Рис. 1.10. Элементарные регионы, используемые для получения формы, представленной на рис. 1.9

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Программирование в Delphi. Трюки и эффекты»

Представляем Вашему вниманию похожие книги на «Программирование в Delphi. Трюки и эффекты» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Программирование в Delphi. Трюки и эффекты»

Обсуждение, отзывы о книге «Программирование в Delphi. Трюки и эффекты» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x