Compartir a través de


Rutas de acceso de gráficos en GDI+

Las rutas de acceso se forman mediante la combinación de líneas, rectángulos y curvas simples. Recuerde de la información general de gráficos vectoriales que los siguientes bloques de creación básicos han demostrado ser los más útiles para dibujar imágenes:

  • Líneas

  • Rectángulos

  • Elipses

  • Arcos

  • Polígonos

  • Splines cardinales

  • Bézier splines

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

Imagen de un trazado de una sola línea, comenzando con una línea recta y continuando en diferentes formas.

Usar una ruta de acceso

La GraphicsPath clase proporciona los métodos siguientes para crear una secuencia de elementos que se van a dibujar: AddLine, AddRectangle, AddEllipseAddArc, , AddPolygonAddCurve (para splines cardinales) y AddBezier. Cada uno de estos métodos está sobrecargado; es decir, cada método admite varias listas de parámetros diferentes. Por ejemplo, una variación del AddLine método recibe cuatro enteros y otra variación del AddLine método recibe dos Point objetos.

Los métodos para agregar líneas, rectángulos y splines bézier a una ruta de acceso tienen métodos complementarios plurales que agregan varios elementos a la ruta de acceso en una sola llamada: AddLines, AddRectanglesy AddBeziers. Además, los métodos AddCurve y AddArc tienen métodos complementarios, AddClosedCurve y AddPie, que agregan una curva cerrada o un sector circular a la ruta de acceso.

Para dibujar una ruta de acceso, necesita un Graphics objeto, un Pen objeto y un GraphicsPath objeto . El Graphics objeto proporciona el DrawPath método y el Pen objeto almacena atributos, como el ancho y el color, de la línea utilizada para representar la ruta de acceso. El GraphicsPath objeto almacena la secuencia de líneas y curvas que componen la ruta de acceso. El Pen objeto y el GraphicsPath objeto se pasan como argumentos al DrawPath método . En el siguiente ejemplo se dibuja un trayecto que consta de una línea, una elipse y una curva 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 ilustración siguiente se muestra la ruta de acceso.

Imagen de una ruta de acceso mostrada dentro de un gráfico.

Además de agregar líneas, rectángulos y curvas a una trayectoria, también puede agregar trayectorias. Esto le permite combinar rutas de acceso existentes para formar rutas de acceso grandes y complejas.

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

Hay otros dos elementos que puede agregar a una ruta: cadenas y pies. Una tarta es una porción del interior de una elipse. En el ejemplo siguiente se crea una ruta de acceso a partir de un arco, una spline cardinal, una cadena y un gráfico circular:

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

En la ilustración siguiente se muestra la ruta de acceso. Tenga en cuenta que un camino no tiene que estar conectado; el arco, la spline cardinal, la cadena y el sector del círculo están separados.

Rutas

Consulte también