Sintaxis de marcado de trazados
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 Extensible Application Markup Language (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 realidad dos números: "2." Y ".3". De forma similar, 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 Extensible Application Markup Language (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 |
---|
<objeto propiedad="[fillRule] figureDescription[figureDescription]*" ... /> |
La sintaxis de uso de atributos de Extensible Application Markup Language (XAML) para una colección PathFigureCollection está compuesta de una o más descripciones de figuras.
Uso de los atributos de PathFigureCollection en XAML |
---|
<objeto propiedad="figureDescription[figureDescription]*" ... /> |
Término |
Descripción |
---|---|
fillRule |
Especifica si StreamGeometry utiliza el valor EvenOdd o Nonzero para la propiedad FillRule. 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 |
---|
M startPoint O bien m startPoint |
Término |
Descripción |
---|---|
startPoint |
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 extremo especificado. l 20 30 y L 20,30 son ejemplos de comandos line válidos.
Sintaxis |
---|
L extremo O bien l extremo |
Término |
Descripción |
---|---|
endPoint |
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 |
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 comando de línea vertical válido.
Sintaxis |
---|
V y O bien v y |
Término |
Descripción |
---|---|
y |
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 extremo especificado utilizando los dos puntos de control especificados (controlPoint1 y controlPoint2). C 100,200 200,400 300,200 es un ejemplo de comando de curva válido.
Sintaxis |
---|
C controlPoint1 controlPoint2 endPoint O bien c controlPoint1 controlPoint2 endPoint |
Término |
Descripción |
---|---|
controlPoint1 |
El primer punto de control de la curva, que determina la tangente inicial de la curva. |
controlPoint2 |
El segundo punto de control de la curva, que determina la tangente final de la curva. |
endPoint |
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 extremo especificado utilizando el punto de control especificado (controlPoint). q 100,200 300,200 es un ejemplo de comando de curva Bézier cuadrática válido.
Sintaxis |
---|
Q controlPoint endPoint -O bien- q controlPoint endPoint |
Término |
Descripción |
---|---|
controlPoint |
El primer punto de control de la curva, que determina las tangentes inicial y final de la curva. |
endPoint |
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 |
El punto de control de la curva, que determina la tangente final de la curva. |
endPoint |
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 |
El punto de control de la curva, que determina el inicio y la tangente de la curva. |
endPoint |
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 |
Radio de X e Y del arco. |
rotationAngle |
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 |
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 |
Coordenada X del punto. |
y |
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.
Infinity
Representa Double.PositiveInfinity.-Infinity
Representa Double.NegativeInfinity.NaN
Representa Double.NaN.
También puede utilizar la notación científica. Por ejemplo, +1.e17 es un valor válido.
Vea también
Referencia
Conceptos
Información general sobre formas y dibujo básico en WPF
Información general sobre geometría