Recortar en una región
Una de las propiedades de la clase Graphics es la región de recorte. Todo el dibujo que realice un determinado objeto Graphics se limita a la región de recorte de dicho objeto Graphics. Para establecer la región de recorte, hay que llamar al método SetClip.
En el siguiente ejemplo, se traza una ruta formando un solo polígono. Luego, el código crea una región basada en dicha ruta. La región se pasa al método SetClip de un objeto Graphics, y, a continuación, se dibujan dos cadenas.
' 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))
[C#]
// 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));
En la siguiente ilustración se muestran las cadenas recortadas.