Класс TRegion
Класс TRegion используется для определения в контексте устройства области. В контексте устройства вы можете выполнить ряд
операций, таких как изображение, закраска, инвертирования и т.д.
Класс TRegion можно также использовать, чтобы определить область
для собственных операций.
Области могут быть различных форм и размеров, от простых
прямоугольников и прямоугольников с округлыми краями до сложных
многоугольных форм. Форму области определяет используемый конструктор. Вы можете также косвенно построить область из описателя
области или существующего объекта TRegion.
TRegion предусматривает используемый по умолчанию конструктор, который создает пустую прямоугольную область. Для инициализации объекта TRegion вы можете использовать функцию SetRectRgn.
Для прямого создания TRegion можно использовать несколько источников. Для создания прямоугольной области используется конструктор, в качестве параметров которого задаются логические координаты объекта TRect. Конструктор, создающий прямоугольную область с
закругленными краями, имеет также параметр TSize, определяющий
высоту и ширину эллипса закруглений. Конструктор эллиптической
области имеет параметр TEllipse. Для создания нерегулярной многоугольной области конструктору передается массив точек TPoints
(координат вершин многоугольника).
Вы можете получить доступ или модифицировать объекты TRegion
непосредственно через описатель HRGN или через ряд функций-элементов и операций. Для получения HRGN из объекта TRegion используйте операцию HRGN.
С помощью функций-элементов TRegion вы можете получить информацию об объекте TRegion и определить, содержится ли точка
внутри области или на ее границе.
Функция SetRectRgn используется для переустановки области
объекта в прямоугольную область. С помощью функции Contain можно
определить, находится ли точка внутри области. Координаты точки
указываются в параметре этой функции. Функция Touches позволяет
определить, находится ли какая-нибудь часть прямоугольника внутри
области. Функцию GetRgnBox можно использовать для получения координат ограничивающего прямоугольника области (наименьшего возможного прямоугольника, включающего в себя всю область).
TRegion имеет также ряд операций, которые можно использовать
для опроса и модификации значений области. Многие из них позволяют вам выполнять сложение и вычитание прямоугольных областей и
других элементов с указанной областью. Булевские операции == и !=
используются для проверки - сравнения двух областей. Изменит область можно с помощью операций присваивания. Например, операция =
позволяет присвоить одну область другой, += позволяет сдвинуть
область на смещение, заданное в объекте TSize (область сохраняет
при этом все свои свойства), операций -= выполняет обратное действие - вычитает смещение из каждой точки области (при использовании с объектом TSize).
Операция &= может выполняться с объектами TRegion и TRect
(перед выполнением операции TRect конвертируется в TRegion с помощью конструктора) и задает пересечение областей (это логическая
операция И). Операция |= может выполняться с объектами TRegion и
TRect (перед выполнением операции TRect конвертируется в TRegion)
и задает объединение областей (это логическая операция ИЛИ). Операция ^= может выполняться с объектами TRegion и TRect (перед выполнением операции TRect конвертируется в TRegion) и позволяет
получить ту область, которая не является объединением областей
(это логическая операция исключающего ИЛИ).