Capítulo 26 Objetos básicos del GDI: El camino (Path)

Se usan para crear figuras complejas, a base de unir segmentos rectos con curvas y líneas Bézier. Estas figuras también pueden contener zonas rellenas y texto.

Los caminos siempre están asociados a un contexto de dispositivo, pero al contrario que otros objetos del GDI, no existe un camino por defecto.

Crear un camino

Para crear un camino hay que definir los puntos que lo componen, esto se hace usando funciones de trazado del GDI entre las llamadas a las funciones BeginPath y EndPath.

Las funciones que se pueden usar dentro de un camino son:

AngleArc LineTo Polyline
Arc MoveToEx PolylineTo
ArcTo Pie PolyPolygon
Chord PolyBezier PolyPolyline
CloseFigure PolyBezierTo Rectangle
Ellipse PolyDraw RoundRect
ExtTextOut Polygon TextOut
                 BeginPath(hdc);
                 SetBkMode(hdc, TRANSPARENT);
                 TextOut(hdc, 10,10, "Con Clase", 9);
                 Rectangle(hdc, 0,0,10,10);
                 EndPath(hdc);

La función CloseFigure sirve para cerrar figuras irregulares creadas a partir de segmentos rectos y/o curvas.

En cualquier momento, antes de cerrar un camino, podemos eliminarlo usando AbortPath.

Operaciones con caminos

En el momento de cerrar el camino, llamando a EndPath, se selecciona el camino y se borra el previamente seleccionado para ese DC. A partir de ese momento tenemos varias opciones:

StrokePath Trazar la línea definida por el camino, usando la pluma actual.
FillPath Pintar el interior del camino, usando el pincel actual.
StrokeAndFillPath Ambas cosas.
PathToRegion Convertir el camino en una región.
FlattenPath Vectorizar el camino, convertir las curvas sen series de segmentos rectos que se aproximen.
GetPath Recuperar las coordenadas y tipos de los puntos que componen el camino.
SelectClipPath Convertir el camino en un camino de recorte.

Como en anteriores ocasiones, el proceso de rellenar figuras está sujeto al modo de relleno de polígonos, podemos obtener ese modo llamando a GetPolyFillMode y cambiarlo usando SetPolyFillMode.

El tema de recortes se trata con detalle en el siguiente capítulo.

Ejemplo 26


  Nombre Fichero Fecha Tamaño Contador Descarga
D Ejemplo 26 win026.zip 2004-06-01 3248 bytes 239