Sintaxis de marcado de trazados

Actualización: noviembre 2007

Los trazados se explican en Información general sobre formas y dibujo básico en WPF y Información general sobre geometría; sin embargo, en este tema se describe en detalle el minilenguaje eficaz y complejo que se puede utilizar para especificar geometrías de trazado de un modo más compacto mediante Lenguaje de marcado de aplicaciones extensible (XAML).  

Este tema contiene las secciones siguientes.

Requisitos previos

Para entender este tema, debe estar familiarizado con las características básicas de los objetos Geometry. Para obtener más información, vea Información general sobre geometría.

Minilenguajes de StreamGeometry y PathFigureCollection

WPF proporciona dos clases que proporcionan minilenguajes para describir trazados geométricos: StreamGeometry y PathFigureCollection.

  • El minilenguaje de StreamGeometry se utiliza para establecer propiedades de tipo Geometry, como la propiedad Clip de un elemento UIElement, o la propiedad Data de un elemento Path. En el ejemplo siguiente se utiliza la sintaxis de atributo para crear StreamGeometry.

    <Path Stroke="Black" Fill="Gray"
          Data="M 10,100 C 10,300 300,-200 300,100" />
    
  • El minilenguaje de PathFigureCollection se utiliza para establecer la propiedad Figures de un elemento PathGeometry. En el ejemplo siguiente se utiliza una sintaxis de atributo para crear una colección PathFigureCollection para PathGeometry.

    <Path Stroke="Black" Fill="Gray">
      <Path.Data>
        <PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" />
      </Path.Data>
    </Path>
    

Como puede verse en los ejemplos anteriores, los dos minilenguajes son muy similares. Siempre es posible de utilizar un elemento PathGeometry en cualquier situación en que se pueda utilizar un elemento StreamGeometry; así pues, ¿cuál de ellos se debe utilizar? Utilice StreamGeometry cuando no necesite modificar el trazado después de crearlo; utilice PathGeometry en caso de que exista la necesidad de modificar el trazado.

Para obtener más información sobre las diferencias entre los objetos PathGeometry y StreamGeometry, consulte Información general sobre geometría.

Nota sobre el espacio en blanco

Para mayor brevedad, en las secciones de sintaxis que figuran a continuación se muestra un espacio simple, pero también son aceptables varios espacios en aquellos lugares donde se muestra un espacio simple.

En realidad, no es preciso que dos números estén separados por una coma o espacio en blanco, pero únicamente se pueden omitir cuando la cadena resultante es inequívoca. Por ejemplo, 2..3 representa en la realidad dos números: “2.” y “.3”. Igualmente, 2-3 es “2” y “-3”. Tampoco se necesitan espacios antes ni después de los comandos.

Sintaxis

La sintaxis de uso de atributos de Lenguaje de marcado de aplicaciones extensible (XAML) de un objeto StreamGeometry está compuesta de un valor FillRule opcional y de una o más descripciones de figuras.

Uso de los atributos de StreamGeometry en XAML

<objetopropiedad="[fillRule] figureDescription[figureDescription]*" ... />

La sintaxis de uso de atributos de Lenguaje de marcado de aplicaciones extensible (XAML) para una colección PathFigureCollection está compuesta de una o más descripciones de figuras.

Uso de los atributos de PathFigureCollection en XAML

<objetopropiedad="figureDescription[figureDescription]*" ... />

Término

Descripción

fillRule

System.Windows.Media.FillRule

Especifica si StreamGeometry utiliza el valor EvenOdd o Nonzero para la propiedad FillRule.

  • F0 especifica la regla de relleno EvenOdd.

  • F1 especifica la regla de relleno Nonzero.

Si omite este comando, el subtrazado utiliza el comportamiento predeterminado, que es EvenOdd. Si especifica este comando, debe colocarlo primero.

figureDescription

Una figura compuesta de un comando de movimiento, comandos de dibujo y un comando de cierre opcional.

moveCommanddrawCommands [closeCommand]

moveCommand

Un comando de movimiento que especifica el punto de inicio de la figura. Consulte la sección Comando de movimiento.

drawCommands

Uno o más comandos de dibujo que describen el contenido de la figura. Consulte la sección Comandos de dibujo.

closeCommand

Un comando de cierre opcional que cierra la figura. Consulte la sección Comando de cierre.

Comando de movimiento

Especifica el punto de inicio de una nueva figura.

Sintaxis

MMstartPoint

O bien

mmstartPoint

Término

Descripción

startPoint

System.Windows.Point

El punto de inicio de una nueva figura.

Una M mayúscula indica que startPoint es un valor absoluto; una m minúscula indica que startPoint es un desplazamiento con respecto al punto anterior, o (0,0) si este último no existe. Si enumera varios puntos después del comando de movimiento, se dibuja una línea por ellos como si se hubiera especificado el comando de línea.

Comandos de dibujo

Un comando de dibujo puede estar compuesto de varios comandos de forma. Están disponibles los comandos de forma siguientes: línea, línea horizontal, línea vertical, curva Bézier cúbica, curva Bézier cuadrática, curva Bézier cúbica suavizada, curva Bézier cuadrática suavizada y arco elíptico.

Cada comando se escribe con una mayúscula o una minúscula. Las letras mayúsculas denotan valores absolutos y las minúsculas, valores relativos: los puntos de control para ese segmento son relativos al punto final del ejemplo anterior. Cuando se escribe secuencialmente más de un comando del mismo tipo, no es necesario escribir el comando para cada entrada; por ejemplo, L 100,200 300,400 es equivalente a L 100,200 L 300,400. En la tabla siguiente se describen los comandos de dibujo (draw) y de movimiento (move).

Comando de línea

Crea una línea recta entre el punto actual y el punto final especificado. l 20 30 y L 20,30 son ejemplos de comandos de línea (line) válidos.

Sintaxis

LLendPoint

O bien

llendPoint

Término

Descripción

endPoint

System.Windows.Point

El punto final de la línea.

Comando de línea horizontal

Crea una línea horizontal entre el punto actual y la coordenada X especificada. H 90 es un ejemplo de un comando de línea horizontal válido.

Sintaxis

H x

O bien

h x

Término

Descripción

x

System.Double

Coordenada x del punto final de la línea.

Comando de línea vertical

Crea una línea vertical entre el punto actual y la coordenada Y especificada. v 90 es un ejemplo de un comando de línea vertical válido.

Sintaxis

V y

O bien

v y

Término

Descripción

y

System.Double

Coordenada Y del punto final de la línea.

Comando de curva Bézier cúbica

Crea una curva Bézier cúbica entre el punto actual y el punto final especificado utilizando los dos puntos de control especificados (controlPoint1 y controlPoint2). C 100,200 200,400 300,200 es un ejemplo de un comando de curva válido.

Sintaxis

C controlPoint1 controlPoint2 endPoint

O bien

c controlPoint1 controlPoint2 endPoint

Término

Descripción

controlPoint1

System.Windows.Point

El primer punto de control de la curva, que determina la tangente inicial de la curva.

controlPoint2

System.Windows.Point

El segundo punto de control de la curva, que determina la tangente final de la curva.

endPoint

System.Windows.Point

Punto en el que se dibuja la curva.

Comando de curva Bézier cuadrática

Crea una curva Bézier cuadrática entre el punto actual y el punto final especificado utilizando el punto de control especificado (controlPoint). q 100,200 300,200 es un ejemplo de un comando de curva Bézier cuadrática válido.

Sintaxis

Q controlPoint endPoint

O bien

q controlPoint endPoint

Término

Descripción

controlPoint

System.Windows.Point

El primer punto de control de la curva, que determina las tangentes inicial y final de la curva.

endPoint

System.Windows.Point

Punto en el que se dibuja la curva.

Comando de curva Bézier cúbica suavizada

Crea una curva Bézier cúbica entre el punto actual y el punto final especificado. Se da por hecho que el primer punto de control es la reflexión del segundo punto de control del comando anterior en relación con el punto actual. Si no hay ningún comando anterior o si el comando anterior no es un comando de curva Bézier cúbica o cúbica suavizada, se dará por hecho que el primer punto de control coincide con el punto actual. El segundo punto de control, el punto de control del final de la curva, se especifica mediante controlPoint2. Por ejemplo, S 100,200 200,300 es un comando de curva Bézier cúbica suavizada válido.

Sintaxis

S controlPoint2 endPoint

O bien

s controlPoint2 endPoint

Término

Descripción

controlPoint2

System.Windows.Point

El punto de control de la curva, que determina la tangente final de la curva.

endPoint

System.Windows.Point

Punto en el que se dibuja la curva.

Comando de curva Bézier cuadrática suavizada

Crea una curva Bézier cuadrática entre el punto actual y el punto final especificado. Se da por hecho que el punto de control es la reflexión del punto de control del comando anterior en relación con el punto actual. Si no hay ningún comando anterior o si el comando anterior no es un comando de curva Bézier cuadrática o cuadrática suavizada, se dará por hecho que el primer punto de control coincide con el punto actual.

Sintaxis

T controlPoint endPoint

O bien

t controlPoint endPoint

Término

Descripción

controlPoint

System.Windows.Point

El punto de control de la curva, que determina el inicio y la tangente de la curva.

endPoint

System.Windows.Point

Punto en el que se dibuja la curva.

Comando de arco elíptico

Crea un arco elíptico entre el punto actual y el punto final especificado.

Sintaxis

A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

O bien

a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

Término

Descripción

size

System.Windows.Size

Radio de X e Y del arco.

rotationAngle

System.Double

Rotación de la elipse, en grados.

isLargeArcFlag

Establezca este valor en 1 si el ángulo del arco debe ser de 180 grados o mayor; de lo contrario, establézcalo en 0.

sweepDirectionFlag

Establezca este valor en 1 si el arco se dibuja en una dirección angular positiva; de lo contrario, establézcalo en 0.

endPoint

System.Windows.Point

Punto en el que se dibuja el arco.

Comando de cierre

Finaliza la figura actual y crea una línea que conecta el punto actual al punto inicial de la figura. Este comando crea una unión de línea (esquina) entre el último segmento y el primer segmento de la figura.

Sintaxis

Z

O bien

z

Sintaxis de puntos

Describe las coordenadas X e Y de un punto.

Sintaxis

x,y

O bien

x y

Término

Descripción

x

System.Double

Coordenada X del punto.

y

System.Double

Coordenada Y del punto.

Valores especiales

En lugar de un valor numérico estándar, puede utilizar también los valores especiales siguientes. Estos valores distinguen mayúsculas de minúsculas.

También puede utilizar la notación científica. Por ejemplo, +1.e17 es un valor válido.

Vea también

Conceptos

Información general sobre formas y dibujo básico en WPF

Información general sobre geometría

Referencia

Path

StreamGeometry

PathGeometry

PathFigureCollection

Otros recursos

Temas "Cómo..." de objetos de geometría

Ejemplos de objetos de geometría

Ejemplos de formas