Esta documentación está archivada y no tiene mantenimiento.

Curvas abiertas y cerradas

.NET Framework 1.1

En la siguiente ilustración se muestran dos curvas: una abierta y otra cerrada.

Las curvas cerradas tienen una parte interior y, por lo tanto, pueden rellenarse con un pincel. En GDI+, la clase Graphics, proporciona los siguientes métodos para rellenar curvas y figuras cerradas: FillRectangle, FillEllipse, FillPie, FillPolygon, FillClosedCurve, FillPath y FillRegion. Siempre que se llama a uno de estos métodos, debe pasarse uno de los tipos específicos de pincel (SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush o PathGradientBrush) como argumento.

El método FillPie es un método asociado al método DrawArc. Del mismo modo que el método DrawArc dibuja una parte del contorno de una elipse, el método FillPie rellena una parte del interior de una elipse. En el siguiente ejemplo se dibuja un arco y se rellena la parte correspondiente al interior de la elipse:

myGraphics.FillPie(mySolidBrush, 0, 0, 140, 70, 0, 120)
myGraphics.DrawArc(myPen, 0, 0, 140, 70, 0, 120)
[C#]
myGraphics.FillPie(mySolidBrush, 0, 0, 140, 70, 0, 120);
myGraphics.DrawArc(myPen, 0, 0, 140, 70, 0, 120);

En la siguiente ilustración se muestra el arco y el sector relleno.

El método FillClosedCurve es un método asociado al método DrawClosedCurve. Ambos métodos cierran automáticamente la curva mediante la conexión del punto final con el punto inicial. En el siguiente ejemplo se dibuja una curva que pasa por (0, 0), (60, 20) y (40, 50). Después, la curva se cierra automáticamente mediante la conexión de (40, 50) con el punto inicial (0, 0), y el interior se rellena con un color sólido.

Dim myPointArray As Point() = _
   {New Point(0, 0), New Point(60, 20), New Point(40, 50)}
myGraphics.DrawClosedCurve(myPen, myPointArray)
myGraphics.FillClosedCurve(mySolidBrush, myPointArray)
[C#]
Point[] myPointArray =
   {new Point(0, 0), new Point(60, 20), new Point(40, 50)};
myGraphics.DrawClosedCurve(myPen, myPointArray);
myGraphics.FillClosedCurve(mySolidBrush, myPointArray);

El método FillPath rellena el interior de los sectores independientes de un trazado. Si un sector de un trazado no forma una forma o una curva cerrada, el método FillPath cierra este sector del trazado automáticamente antes de rellenarlo. En el siguiente ejemplo se dibuja y se rellena un trazado compuesto por un arco, una curva spline cardinal, una cadena y un sector:

Dim mySolidBrush As New SolidBrush(Color.Aqua)
Dim myGraphicsPath As New GraphicsPath()

Dim myPointArray As Point() = { _
   New Point(15, 20), _
   New Point(20, 40), _
   New Point(50, 30)}

Dim myFontFamily As New FontFamily("Times New Roman")
Dim myPointF As New PointF(50, 20)
Dim myStringFormat As New StringFormat()

myGraphicsPath.AddArc(0, 0, 30, 20, - 90, 180)
myGraphicsPath.AddCurve(myPointArray)
myGraphicsPath.AddString("a string in a path", myFontFamily, _
   0, 24, myPointF, myStringFormat)
myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110)

myGraphics.FillPath(mySolidBrush, myGraphicsPath)
myGraphics.DrawPath(myPen, myGraphicsPath)
[C#]
SolidBrush mySolidBrush = new SolidBrush(Color.Aqua);
GraphicsPath myGraphicsPath = new GraphicsPath();

Point[] myPointArray = {
   new Point(15, 20), 
   new Point(20, 40), 
   new Point(50, 30)};

FontFamily myFontFamily = new FontFamily("Times New Roman");
PointF myPointF = new PointF(50, 20);
StringFormat myStringFormat = new StringFormat();

myGraphicsPath.AddArc(0, 0, 30, 20, -90, 180);
myGraphicsPath.AddCurve(myPointArray);
myGraphicsPath.AddString("a string in a path", myFontFamily, 
   0, 24, myPointF, myStringFormat);
myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110);

myGraphics.FillPath(mySolidBrush, myGraphicsPath);
myGraphics.DrawPath(myPen, myGraphicsPath);

En la siguiente ilustración se muestra el trazado con y sin el relleno sólido. Tenga en cuenta que el texto de la cadena tiene contorno, pero no se rellena, con el método DrawPath. El método FillPath es el que pinta el interior de los caracteres de la cadena.

Mostrar: