Практическое руководство. Обрезка изображения по границам области обрезкиHow to: Use Clipping with a Region

Одно из свойств объекта Graphics класс является отсеченную область.One of the properties of the Graphics class is the clip region. Все операции рисования, выполняемые заданного Graphics объекта будет ограничен отсеченную область объекта, Graphics объекта.All drawing done by a given Graphics object is restricted to the clip region of that Graphics object. Можно задать отсеченную область, вызвав SetClip метод.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. Область передается SetClip метод Graphics рисовании объекта и затем две строки.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));
' Create a path that consists of a single polygon.
Dim polyPoints As Point() = { _
   New Point(10, 10), _
   New Point(150, 10), _
   New Point(100, 75), _
   New Point(100, 150)}
Dim path As New GraphicsPath()
path.AddPolygon(polyPoints)

' Construct a region based on the path.
Dim [region] As New [Region](path)

' Draw the outline of the region.
Dim pen As 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.
Dim fontFamily As New FontFamily("Arial")
Dim font As New Font( _
   fontFamily, _
   36, _
   FontStyle.Bold, _
   GraphicsUnit.Pixel)
Dim solidBrush As 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

Предыдущий пример предназначен для работы с Windows Forms и требует PaintEventArgs e, который является параметром PaintEventHandler.The preceding example is designed for use with Windows Forms, and it requires PaintEventArgs e, which is a parameter of PaintEventHandler.

См. такжеSee also