Compartir a través de


Curvas abiertas y cerradas en GDI+

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

Captura de pantalla de una curva abierta y una curva cerrada.

Interfaz administrada para curvas

Las curvas cerradas tienen un interior y, por tanto, se pueden rellenar con un pincel. La Graphics clase de GDI+ proporciona los métodos siguientes para rellenar formas y curvas cerradas: FillRectangle, FillEllipse, FillPie, FillPolygon, FillClosedCurve, FillPathy FillRegion. Siempre que llame a uno de estos métodos, debe pasar uno de los tipos de pincel específicos (SolidBrush, HatchBrush, TextureBrush, LinearGradientBrush, o PathGradientBrush) como argumento.

El FillPie método es un complemento del DrawArc método . Al igual que el DrawArc método dibuja una parte del contorno de una elipse, el FillPie método rellena una parte del interior de una elipse. En el ejemplo siguiente se dibuja un arco y se rellena la parte correspondiente del interior de la elipse:

myGraphics.FillPie(mySolidBrush, 0, 0, 140, 70, 0, 120);
myGraphics.DrawArc(myPen, 0, 0, 140, 70, 0, 120);
myGraphics.FillPie(mySolidBrush, 0, 0, 140, 70, 0, 120)
myGraphics.DrawArc(myPen, 0, 0, 140, 70, 0, 120)

En la ilustración siguiente se muestra el arco y el gráfico circular relleno.

Captura de pantalla de un arco y el gráfico circular rellenado.

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

Point[] myPointArray =
{
    new Point(0, 0),
    new Point(60, 20),
    new Point(40, 50)
};
myGraphics.DrawClosedCurve(myPen, myPointArray);
myGraphics.FillClosedCurve(mySolidBrush, myPointArray);
Dim myPointArray As Point() = _
   {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 los interiores de los segmentos separados de un trazado. Si un fragmento de una ruta no forma una curva o una forma cerrada, FillPath método cierra automáticamente esa parte de la ruta antes de rellenarla. En el ejemplo siguiente se dibuja y se rellena una trayectoria que consta de un arco, una spline cardinal, una cadena y un gráfico circular.

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);
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)

En la siguiente ilustración se muestra la ruta de acceso con y sin el relleno sólido. Tenga en cuenta que el texto de la cadena se perfila, pero no se rellena, mediante el método DrawPath. Es el método FillPath que pinta los interiores de los caracteres de la cadena.

Cadena en una ruta

Consulte también