Compartir vía


Sintaxis de marcado de trazados

Los trazados se analizan en Información general sobre formas y dibujo básico en WPF y en Información general sobre geometría; sin embargo, en este tema se describe en detalle el minilenguaje potente y complejo que puede usar para especificar de manera más compacta las geometrías de trazado con el lenguaje XAML.

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, consulte Información general sobre geometría.

Minilenguajes StreamGeometry y PathFigureCollection

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

  • Use el minilenguaje StreamGeometry al establecer una propiedad de tipo Geometry, como la Clip propiedad de un UIElement la propiedad Data de un elemento Path. En el siguiente ejemplo se usa la sintaxis de atributo para crear un StreamGeometry.

    <Path Stroke="Black" Fill="Gray"
          Data="M 10,100 C 10,300 300,-200 300,100" />
    
  • Use el minilenguaje PathFigureCollection al establecer la propiedad Figures de PathGeometry. En el ejemplo siguiente se usa una sintaxis de atributo para crear un PathFigureCollection para un 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 ver en los ejemplos anteriores, los dos minilenguajes son muy similares. Siempre se puede usar un PathGeometry en cualquier situación en la que se podría usar un StreamGeometry; ¿cuál de las dos debería usar? Use StreamGeometry cuando no necesita modificar el trazado después de haberlo creado; use PathGeometry si necesita 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 los espacios en blanco

Por razones de brevedad, se muestra un solo espacio en las secciones de sintaxis siguientes, pero también se aceptan varios espacios cada vez que se muestra uno solo.

No es necesario separar dos números con una coma o un espacio en blanco, pero esto solo se puede hacer si la cadena resultante no es ambigua. Por ejemplo, 2..3 se trata en realidad de dos números: «2.» y «.3». Del mismo modo, 2-3 es «2» y «-3». Tampoco se necesitan espacios antes o después de los comandos.

Sintaxis

La sintaxis de uso de atributos en el lenguaje XAML para un StreamGeometry se compone de un valor FillRule opcional y una o más descripciones de figuras.

Uso del atributo XAML StreamGeometry
< object property ="[ fillRule] figureDescription[ figureDescription]* " ... />

La sintaxis de uso de atributos del lenguaje XAML para un PathFigureCollection se compone de una o varias descripciones de figuras.

Uso del atributo XAML PathFigureCollection
< object property =" figureDescription[ figureDescription]* " ... />
Término Descripción
fillRule System.Windows.Media.FillRule

Especifica si StreamGeometry usa el EvenOdd o FillRule del Nonzero.

- F0 especifica la EvenOdd regla de rellenado.
- F1 especifica la Nonzero regla de rellenado.

Si omite este comando, el subtrazado usa el comportamiento predeterminado, que es EvenOdd. Si especifica el comando, debe colocarlo primero.
figureDescription Figura compuesta de un comando de movimiento, comandos de dibujo y un comando de cierre opcional.

moveCommand drawCommands [ closeCommand ]
moveCommand Comando de movimiento que especifica el punto inicial de la figura. Consulte la sección sobre el comando Mover.
drawCommands Uno o más comandos de dibujo que describe el contenido de la figura. Consulte la sección sobre el comando Dibujar.
closeCommand Comando opcional de cierre que cierra la figura. Consulte la sección sobre el comando Cerrar.

Comando de movimiento

Especificar el punto inicial de una figura nueva.

Sintaxis
M startPoint

O bien

m startPoint
Término Descripción
startPoint System.Windows.Point

El punto inicial de una figura nueva.

Una M mayúscula indica que startPoint es un valor absoluto; una m minúscula, que startPoint es un desplazamiento con respecto al punto anterior, o bien (0,0) si no existe ninguno. Si enumera varios puntos después del comando de movimiento, se dibuja una línea a esos puntos si especificó el comando de línea.

Comandos de dibujo

Un comando de dibujo puede constar de varios comandos de forma. Están disponibles los siguientes comandos de forma: 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.

Puede escribir cada comando con una letra mayúscula o una minúscula, donde las letras mayúsculas indican valores absolutos y las minúsculas, valores relativos: los puntos de control de ese segmento son relativos al punto final del ejemplo anterior.

Sugerencia

Cuando escribe más de un comando del mismo tipo de forma secuencial, puede omitir la entrada de comando duplicada; por ejemplo, L 100,200 300,400 es equivalente a L 100,200 L 300,400.

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 válidos.

Sintaxis
L endPoint

O bien

l endPoint
Término Descripción
endPoint System.Windows.Point

Punto de conexión de la línea.

Una L mayúscula indica que endPoint es un valor absoluto; una l minúscula, que endPoint es un desplazamiento con respecto al punto anterior, o bien (0,0) si no existe ninguno.

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.

Una H mayúscula indica que x es un valor absoluto; una h minúscula, que x es un desplazamiento con respecto al punto anterior, o bien (0,0) si no existe ninguno.

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 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.

Una V mayúscula indica que y es un valor absoluto; una v minúscula, que y es un desplazamiento con respecto al punto anterior, o bien (0,0) si no existe ninguno.

Comando de curva Bézier cúbica

Crea una curva de Bézier cúbica entre el punto actual y el punto final especificado con 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 controlPoint1controlPoint2endPoint

O bien

c controlPoint1controlPoint2endPoint
Término Descripción
controlPoint1 System.Windows.Point

El primer punto de control de la curva, que determina la tangente de inicio de la misma.
controlPoint2 System.Windows.Point

El segundo punto de control de la curva, que determina la tangente final de la misma.
endPoint System.Windows.Point

Punto en el que se dibuja la curva.

Comando de curva Bézier cuadrática

Crea una curva de Bézier cuadrática entre el punto actual y el punto final especificado con 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 punto de control de la curva, que determina las tangentes de inicio y final de la misma.
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. El primer punto de control se supone que es el reflejo del segundo punto de control del comando anterior en relación al punto actual. Si no hay un comando anterior o si el comando anterior no fuera un comando de curva Bézier cúbica o un comando de curva Bézier cúbica suavizada, el primer punto de control se supone coincidente con el punto actual. El segundo punto de control, el punto de control correspondiente al final de la curva, se especifica mediante controlPoint2. Por ejemplo, S 100,200 200,300 es un comando válido de curva de Bézier cúbica suavizada.

Sintaxis
S controlPoint2endPoint

O bien

s controlPoint2endPoint
Término Descripción
controlPoint2 System.Windows.Point

El punto de control de la curva, que determina la tangente final de la misma.
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. El punto de control se supone que es el reflejo del punto de control del comando anterior en relación al punto actual. Si no hay un comando anterior o si el comando anterior no fuera un comando de curva Bézier cuadrática o un comando de curva Bézier cuadrática suavizada, el punto de control coincide con el punto actual.

Sintaxis
T endPoint

O bien

t endPoint
Término Descripción
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

Los radios X e Y del arco.
rotationAngle System.Double

La rotación de la elipse, en grados.
isLargeArcFlag Establezca el valor en 1 si el ángulo del arco debe ser de 180 grados o más; de lo contrario, establézcalo en 0.
sweepDirectionFlag Establezca el valor en 1 si se dibuja en una dirección con ángulo positivo; de lo contrario, establézcalo en 0.
endPoint System.Windows.Point

Punto en el que está dibujado el arco.

Comando de cierre

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

Sintaxis
Z

O bien

z

Sintaxis de punto

Describe las coordenadas x e y de un punto donde (0,0) es la esquina superior izquierda.

Sintaxis
x , y

O bien

x y
Término Descripción
x System.Double

La coordenada x del punto.
y System.Double

La coordenada y del punto.

Valores especiales

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

Infinity
Representa Double.PositiveInfinity.

-Infinity
Representa Double.NegativeInfinity.

NaN
Representa Double.NaN.

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

Vea también