Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp_Graphics.doc
Скачиваний:
20
Добавлен:
16.11.2019
Размер:
3.1 Mб
Скачать

Использование областей

Класс GDI+ Region позволяет определить собственную фигуру. Фигура может состоять из линий, многоугольников и кривых.

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

Проверка нахождения указателя мыши в заданной области

Целью проверки попадания является определение того, находится ли указатель над данным объектом, например значком или кнопкой.

Пример

В следующем примере создается область в форме креста, являющаяся объединением двух прямоугольников. Предполагается, что переменная point содержит координаты последнего по времени щелчка мышью. В коде осуществляется проверка того, что точка point принадлежит области в форме креста. Если точка лежит в области (есть попадание), то эта область закрашивается непрозрачной красной кистью. В противном случае она закрашивается полупрозрачной красной кистью.

-----

Компиляция кода

Предыдущий пример предназначен для работы с Windows Forms, для него необходим объект PaintEventArgs e, передаваемый в качестве параметра обработчику событий PaintEventHandler.

How to: Use Clipping with a Region

One of the properties of the Graphics class is the clip region. All drawing done by a given Graphics object is restricted to the clip region of that Graphics object. You can set the clip region by calling the SetClip method.

Example

The following example constructs a path that consists of a single polygon. Then the code constructs a region, based on that path. The region is passed to the SetClip method of a Graphics object, and then two strings are drawn.

The following illustration shows the clipped strings.

// Create a path that consists of a single polygon.

Point[] polyPoints = {

new Point(10, 10),

new Point(150, 10),

new Point(100, 75),

new Point(100, 150)};

GraphicsPath path = new GraphicsPath();

path.AddPolygon(polyPoints);

// Construct a region based on the path.

Region region = new Region(path);

// Draw the outline of the region.

Pen pen = Pens.Black;

e.Graphics.DrawPath(pen, path);

// Set the clipping region of the Graphics object.

e.Graphics.SetClip(region, CombineMode.Replace);

// Draw some clipped strings.

FontFamily fontFamily = new FontFamily("Arial");

Font font = new Font(

fontFamily,

36, FontStyle.Bold,

GraphicsUnit.Pixel);

SolidBrush solidBrush = new SolidBrush(Color.FromArgb(255, 255, 0, 0));

e.Graphics.DrawString(

"A Clipping Region",

font, solidBrush,

new PointF(15, 25));

e.Graphics.DrawString(

"A Clipping Region",

font,

solidBrush,

new PointF(15, 68));

Compiling the Code

The preceding example is designed for use with Windows Forms, and it requires PaintEventArgs e, which is a parameter of PaintEventHandler.