Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Визуальное программирование / Визуальное программирование_лекция_16.pps
Скачиваний:
38
Добавлен:
07.06.2015
Размер:
265.22 Кб
Скачать

WIN API функции в

Delphi. Работа с регионами

(областями)

1

WIN API функции в Delphi

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

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

2

WIN API функции в Delphi

Абстракция оборудования и различных протоколов вводится в виде библиотек API (Application Program Interface), такую абстракцию называют базовой.

Win API – это набор функций, предоставляемых операционной системой каждой программе. Эти функции находятся в стандартных динамически компонуемых библиотеках (Dynamic Linked Library, DLL), таких как kernel32.dll, user32.dll, gdi32.dll. Эти файлы находятся в директории Window\System.

3

WIN API функции в Delphi

DLL-библиотеки могут подключаться к программе статически и динамически.

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

4

Декларирование WIN API функций

WIN API функции уже описаны в соответствующих модулях, достаточно упомянуть их имена в разделе uses.

5

Изменение стандартной экранной формы. Работа с регионами

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

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

6

Изменение стандартной экранной формы. Работа с регионами

В Windows регионом называется прямоугольник, полигон или эллипс (либо комбинация двух или более этих фигур), которые могут быть заполнены, нарисованы, инвертированы, обрамлены и могут использоваться для определения местонахождения курсора.

С точки зрения Windows, регион является обыкновенным объектом GDI (Graphics Device Interface – интерфейс, который Windows использует для рисования 2D графики), задаваемым дескриптором HRGN.

7

Применение регионов

Регион позволяет задать на канве область определенной формы. procedure TForm1.RebuildWindowRgn;

var

MyRgn, OldRgn : HRGN; begin

MyRgn := CreateEllipticRgn(1, 1, 50, 50); // Запоминается старый регион

OldRgn:=SelectObject(Canvas.handle, MyRgn); Canvas.Rectangle(4, 4, 150, 150);

//------ выполняется рисование ---------

// Восстанавливается исходный регион SelectObject(Canvas.handle,OldRgn);

end;

8

Применение регионов

Регион позволяет задать на канве область определенной формы. procedure TForm1.RebuildWindowRgn;

var

MyRgn, OldRgn : HRGN; begin

MyRgn := CreateEllipticRgn(1, 1, 50, 50); // Запоминается старый регион

OldRgn:=SelectObject(Canvas.handle, MyRgn); Canvas.Rectangle(4, 4, 150, 150);

//------ выполняется рисование ---------

// Восстанавливается исходный регион SelectObject(Canvas.handle,OldRgn);

end;

9

API функции для создания

регионов

function CreateRectRgn(X1, Y1, X2, Y2: Integer): HRGN; function CreateRectRgnIndirect(const p1: TRect): HRGN;

Функция CreateRectRgn создает регион прямоугольной формы (параметры задают координаты для верхнего левого и нижнего правого угла прямоугольника, задающего регион. Функция CreateRectRgnIndirect аналогична функции CreateRectRgn – разница в том, что вместо четырех координат функция получает структуру типа TRect .

function CreateRoundRectRgn(X1, Y1, X2, Y2, H, W: Integer): HRGN;

Функция CreateRoundRectRgn аналогична функции CreateRectRgn, но создаваемая прямоугольная область имеет скругленные углы. X1, Y1 – координаты верхнего левого угла, X2, Y2 – координаты нижнего

правого, H, W – высота и ширина эллипса, применяемого для

скругления углов

10