Compartir a través de


Trazados de gráficos en GDI+

Los trazados se forman mediante la combinación de líneas, rectángulos y curvas simples. Recuerde que, tal y como se muestra en Información general acerca de gráficos vectoriales, los siguientes bloques de creación han resultado ser los más útiles para dibujar imágenes:

  • Líneas

  • Rectángulos

  • Elipses

  • Arcos

  • Polígonos

  • Curvas spline cardinales

  • Curvas spline de Bézier

En GDI+, el objeto GraphicsPath permite recopilar una secuencia de estos bloques de creación en una unidad. La secuencia completa de líneas, rectángulos, polígonos y curvas puede dibujarse con una llamada al método DrawPath de la clase Graphics En la siguiente ilustración se muestra un trazado creado mediante la combinación de una línea, un arco, una curva spline de Bézier y una curva spline cardinal.

Ruta de acceso

Utilizar un trazado

La clase GraphicsPath proporciona los métodos siguientes para crear una secuencia de elementos que se va a dibujar: AddLine, AddRectangle, AddEllipse, AddArc, AddPolygon, AddCurve (para las curvas spline cardinales) y AddBezier. Cada uno de estos métodos está sobrecargado, es decir, cada método admite varias listas de parámetros distintas. Por ejemplo, una variación del método AddLine recibe cuatro enteros y otra variación del método AddLine recibe dos objetos Point.

Los métodos para agregar líneas, rectángulos y curvas spline de Bézier tienen métodos asociados plurales que agregan varios elementos al trazado en una única llamada: AddLines, AddRectangles y AddBeziers. Además, los métodos AddCurve y AddArc tienen métodos asociados, AddClosedCurve y AddPie que agregan una curva cerrada o sector al trazado.

Para dibujar un trazado son necesarios los objetos Graphics, Pen y GraphicsPath. El objeto Graphics proporciona el método DrawPath, y el objeto Pen almacena atributos como el ancho y el color de la línea que se utiliza para representar el trazado. El objeto GraphicsPath almacena la secuencia de líneas y curvas que componen el trazado. El objeto Pen y el objeto GraphicsPath se pasan como argumentos al método DrawPath. En el siguiente ejemplo se dibuja un trazado que consta de una línea, una elipse y una curva spline de Bézier:

        myGraphicsPath.AddLine(0, 0, 30, 20)
        myGraphicsPath.AddEllipse(20, 20, 20, 40)
        myGraphicsPath.AddBezier(30, 60, 70, 60, 50, 30, 100, 10)
        myGraphics.DrawPath(myPen, myGraphicsPath)

myGraphicsPath.AddLine(0, 0, 30, 20);
myGraphicsPath.AddEllipse(20, 20, 20, 40);
myGraphicsPath.AddBezier(30, 60, 70, 60, 50, 30, 100, 10);
myGraphics.DrawPath(myPen, myGraphicsPath);

En la siguiente ilustración se muestra el trazado.

Ruta de acceso

Además de agregar líneas, rectángulos y curvas a un trazado, se pueden agregar trazados a un trazado. Esto permite combinar los trazados existentes para formar trazados enormes y complejos.

        myGraphicsPath.AddPath(graphicsPath1, False)
        myGraphicsPath.AddPath(graphicsPath2, False)

myGraphicsPath.AddPath(graphicsPath1, false);
myGraphicsPath.AddPath(graphicsPath2, false);

Existen otros dos elementos que se pueden agregar a un trazado: cadenas y sectores. Un sector es una parte del interior de una elipse. En el siguiente ejemplo se crea un trazado a partir de un arco, un curva spline cardinal, una cadena y un sector:

        Dim myGraphicsPath As New GraphicsPath()

        Dim myPointArray As Point() = { _
           New Point(5, 30), _
           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.StartFigure()
        myGraphicsPath.AddCurve(myPointArray)
        myGraphicsPath.AddString("a string in a path", myFontFamily, _
           0, 24, myPointF, myStringFormat)
        myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110)
        myGraphics.DrawPath(myPen, myGraphicsPath)

     GraphicsPath myGraphicsPath = new GraphicsPath();

     Point[] myPointArray = {
new Point(5, 30), 
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.StartFigure();
     myGraphicsPath.AddCurve(myPointArray);
     myGraphicsPath.AddString("a string in a path", myFontFamily,
        0, 24, myPointF, myStringFormat);
     myGraphicsPath.AddPie(230, 10, 40, 40, 40, 110);
     myGraphics.DrawPath(myPen, myGraphicsPath);

En la siguiente ilustración se muestra el trazado. Tenga en cuenta que un trazado no tiene por qué estar conectado; el arco, la curva spline cardinal, la cadena y el sector están separados.

Trayectos

Vea también

Tareas

Cómo: Crear objetos Graphics para dibujar

Referencia

System.Drawing.Drawing2D.GraphicsPath

System.Drawing.Point

Otros recursos

Líneas, curvas y formas

Crear y dibujar trazados