Области в GDI+
Обновлен: Ноябрь 2007
Область — это часть зоны, отображаемой устройством вывода. Области могут быть как простыми (один прямоугольник), так и сложными (набор многоугольников и замкнутых кривых). На приведенном ниже рисунке изображены две области: одна из них образована прямоугольником, а другая образована контуром.
Использование областей
Области часто используются для задания обрезки и для проверки попадания в некоторую зону. Обрезка заключается в запрете на рисование вне границ определенной области экрана, обычно это область, нуждающаяся в обновлении. Проверка на попадание заключается в определении, находился ли курсор в определенной области экрана, когда была нажата кнопка мыши.
Область можно построить на основе прямоугольника или контура. .Можно также создавать сложные области путем объединения существующих областей. У класса Region имеются следующие методы для объединения областей: Intersect, Union, Xor, Exclude и Complement.
Пересечение двух областей состоит из всех точек, принадлежащих обеим областям. Объединение — это набор из всех точек, принадлежащих одной или обеим областям. Дополнение области состоит из всех точек, не входящих в область. На приведенном ниже рисунке изображено пересечение и объединение двух областей, изображенных на предыдущем рисунке.
Метод Xor, примененный к паре областей, выдает область, содержащую все точки, которые принадлежат только одной из заданных областей, но не им обеим. Метод Exclude, примененный к паре областей, выдает область, содержащую все точки первой области, не являющиеся точками второй области. На приведенном ниже рисунке изображены области, полученные в результате применения методов Xor и Exclude к двум областям, изображение которых приведено в начале раздела.
Чтобы залить область, требуются объекты Graphics, Brush и Region. У объекта Graphics имеется метод FillRegion, а объект Brush предназначен для хранения таких параметров заливки, как ее цвет и шаблон. В приведенном ниже примере демонстрируется заливка области сплошным цветом.
myGraphics.FillRegion(mySolidBrush, myRegion)
myGraphics.FillRegion(mySolidBrush, myRegion);