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 startPointO 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 endPointO 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 xO 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 yO 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 (controlPoint
1 y controlPoint
2). C 100,200 200,400 300,200
es un ejemplo de un comando de curva válido.
Sintaxis |
---|
C controlPoint 1controlPoint 2endPoint O bien c controlPoint 1controlPoint 2endPoint |
Término | Descripción |
---|---|
controlPoint 1 |
System.Windows.Point El primer punto de control de la curva, que determina la tangente de inicio de la misma. |
controlPoint 2 |
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 controlPoint
2. Por ejemplo, S 100,200 200,300
es un comando válido de curva de Bézier cúbica suavizada.
Sintaxis |
---|
S controlPoint 2endPoint O bien s controlPoint 2endPoint |
Término | Descripción |
---|---|
controlPoint 2 |
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
.NET Desktop feedback