Rutas de acceso (GDI+)

Los trazados se forman combinando líneas, rectángulos y curvas simples. Recuerde de la información general de los 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
  • Puntos suspensivos
  • 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 sola unidad. Toda la secuencia de líneas, rectángulos, polígonos y curvas se puede dibujar con una llamada al método Graphics::D rawPath de la clase Graphics . En la ilustración siguiente 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.

ilustración de una ruta de acceso que combina una línea, un arco, una spline bezier y una spline cardinal

La clase GraphicsPath proporciona los métodos siguientes para crear una secuencia de elementos que se van a dibujar: AddLine, AddRectangle, AddEllipse, AddArc, AddPolygon, AddCurve (para splines cardinales) y AddBezier. Cada uno de estos métodos está sobrecargado; es decir, cada método incluye varias variaciones con diferentes listas de parámetros. 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 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, AddRectangles y AddBeziers. Además, el método AddCurve tiene un método complementario , AddClosedCurve, que agrega una curva cerrada a la ruta de acceso.

Para dibujar una ruta de acceso, necesita un objeto Graphics , un objeto Pen y un objeto GraphicsPath . El objeto Graphics proporciona el método Graphics::D rawPath y el objeto Pen almacena atributos de la ruta de acceso, como el ancho de línea y el color. El objeto GraphicsPath almacena la secuencia de líneas, rectángulos y curvas que componen la ruta de acceso. Las direcciones del objeto Pen y el objeto GraphicsPath se pasan como argumentos al método Graphics::D rawPath . En el ejemplo siguiente se dibuja una ruta de acceso que consta de una línea, una elipse y una spline 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);

En la siguiente ilustración se muestra el trazado.

ilustración de una ruta de acceso formada por una línea, una elipse y una spline bezier

Además de agregar líneas, rectángulos y curvas a un trazado, le puede agregar trazados. Esto le permite combinar trazados existentes para formar trazados grandes y complejos. El código siguiente agrega graphicsPath1 y graphicsPath2 a myGraphicsPath. El segundo parámetro del método GraphicsPath::AddPath especifica si la ruta de acceso agregada está conectada a la ruta de acceso existente.

myGraphicsPath.AddPath(&graphicsPath1, FALSE);
myGraphicsPath.AddPath(&graphicsPath2, TRUE);

Hay otros dos elementos que puede agregar a un trazado: cadenas y gráficos circulares. Un gráfico circular es una parte 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.

myGraphicsPath.AddArc(0, 0, 30, 20, -90, 180);
myGraphicsPath.AddCurve(myPointArray, 3);
myGraphicsPath.AddString(L"a string in a path", 18, &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 que estar conectado; el arco, la curva spline cardinal, la cadena y el gráfico circular están separados.

ilustración de una ruta de acceso formada por líneas desconectadas: un arco, una spline cardinal, una cadena y un gráfico circular