Compartir a través de


Sintaxis de marcado de ruta

Las rutas de acceso se describen en Formas y dibujo básico en información general de WPF y la información general sobre geometría; sin embargo, en este tema se describe detalladamente el mini-lenguaje eficaz y complejo que puede usar para especificar geometrías de ruta de acceso de forma más compacta mediante el Lenguaje de marcado extensible de aplicaciones (XAML).

Prerrequisitos

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

StreamGeometry y PathFigureCollection Mini-Languages

WPF proporciona dos clases que proporcionan mini lenguajes para describir rutas geométricas: StreamGeometry y PathFigureCollection.

  • Usas el mini lenguaje StreamGeometry al establecer una propiedad de tipo Geometry, como la propiedad Clip de un UIElement o la propiedad Data de un elemento Path. En el ejemplo siguiente 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" />
    
  • Usas el mini-language PathFigureCollection al establecer la propiedad Figures de un PathGeometry. En el ejemplo siguiente se usa una sintaxis de atributo para crear un 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 ver en los ejemplos anteriores, los dos mini idiomas son muy similares. Siempre es posible usar un PathGeometry en cualquier situación en la que se podría usar un StreamGeometry; entonces, ¿cuál debería usar? Use un StreamGeometry cuando no necesite modificar la ruta de acceso después de crearla; use un PathGeometry si necesita modificar la ruta de acceso.

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

Una nota sobre el espacio en blanco

Por motivos de brevedad, se muestra un solo espacio en las secciones de sintaxis siguientes, pero también se admiten varios espacios siempre que se muestre un solo espacio.

En realidad, dos números no tienen que estar separados por una coma o un espacio en blanco, pero esto solo se puede hacer cuando la cadena resultante es inequívoca. Por ejemplo, 2..3 es realmente dos números: "2". Y ".3". Del mismo modo, 2-3 es "2" y "-3". Los espacios no son necesarios antes o después de los comandos, tampoco.

Sintaxis

La sintaxis de uso de atributos de Lenguaje de marcado extensible de aplicaciones (XAML) para un StreamGeometry objeto se compone de un valor opcional FillRule y una o varias descripciones de figura.

Uso de atributos XAML de StreamGeometry
< objectproperty="[ fillRule] figureDescription[ figureDescription]* " ... />

La sintaxis de uso de atributos de Lenguaje de marcado extensible de aplicaciones (XAML) para un PathFigureCollection objeto se compone de una o varias descripciones de ilustración.

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

Especifica si usa StreamGeometry o EvenOddNonzeroFillRule.

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

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

moveCommand drawCommands [ closeCommand ]
moveCommand Comando move que especifica el punto inicial de la figura. Consulte la sección Comando de movimiento.
drawCommands Uno o varios comandos de dibujo que describen el contenido de la figura. Consulte la sección Comandos de Draw .
cerrarComando Comando close opcional que cierra la figura. Consulte la sección Close Command (Cerrar comando ).

Comando Move

Especifica el punto de inicio de una nueva figura.

Sintaxis
M puntoDeInicio

- o -

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

Punto inicial de una nueva figura.

Un mayúscula M indica que startPoint es un valor absoluto; un minúscula m indica que startPoint es un desplazamiento al punto anterior o (0,0) si no existe ninguno. Si enumera varios puntos después del mandato "move", se dibuja una línea hacia esos puntos a pesar de que usted había especificado el mandato "linea".

Comandos de Dibujo

Un comando draw puede constar de varios comandos de forma. Los siguientes comandos de forma están disponibles: línea, línea horizontal, línea vertical, curva bezier cúbica, curva Bezier cuadrática, curva bezier cúbica suave, curva bezier cuadrática suave y arco elíptico.

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

Sugerencia

Al escribir secuencialmente más de un comando del mismo tipo, puede omitir la entrada de comando duplicado; 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 punto final

- o -

l punto final
Término Descripción
punto final de System.Windows.Point

Punto final de la línea.

Un mayúscula L indica que endPoint es un valor absoluto; un minúscula l indica que endPoint es un desplazamiento al punto anterior o (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 -

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

Coordenada x del punto final de la línea.

Un mayúscula H indica que x es un valor absoluto; un minúscula h indica que x es un desplazamiento al punto anterior o (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 un comando de línea vertical válido.

Sintaxis
V y

- o -

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

Coordenada y del punto final de la línea.

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

Comando de curva cúbica de Bézier

Crea una curva Bezier cúbica entre el punto actual y el punto final especificado mediante 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 -

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

Primer punto de control de la curva, que determina la tangente inicial de la curva.
controlPoint2 System.Windows.Point

Segundo punto de control de la curva, que determina la tangente final de la curva.
endPoint System.Windows.Point

Punto al que se dibuja la curva.

Comando de curva Bezier cuadrática

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

Sintaxis
Q controlPoint endPoint

- o -

q controlPoint endPoint
Término Descripción
controlPoint System.Windows.Point

Punto de control de la curva, que determina las tangentes iniciales y finales de la curva.
endPoint System.Windows.Point

Punto al que se dibuja la curva.

Comando de curva Bézier cúbica suave

Crea una curva Bezier cúbica entre el punto actual y el punto final especificado. Se supone que el primer punto de control es la reflexión del segundo punto de control del comando anterior con respecto al punto actual. Si no hay ningún comando anterior o si el comando anterior no era un comando de curva bezier cúbica o un comando de curva bezier cúbica suave, suponga que el primer punto de control coincide con el punto actual. El segundo punto de control, el punto de control para el final de la curva, se especifica en controlPoint2. Por ejemplo, S 100,200 200,300 es un comando de curva Bezier cúbica suave válida.

Sintaxis
S controlPoint2endPoint

- o -

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

Punto de control de la curva, que determina la tangente final de la curva.
endPoint System.Windows.Point

Punto al que se dibuja la curva.

Comando de curva Bezier cuadrática suave

Crea una curva Bezier cuadrática entre el punto actual y el punto final especificado. Se supone que el punto de control es la reflexión del punto de control del comando anterior con respecto al punto actual. Si no hay ningún comando anterior o si el comando anterior no era un comando de curva Bezier cuadrática o un comando de curva Bezier cuadrática suave, el punto de control coincide con el punto actual.

Sintaxis
T endPoint

- o -

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

Punto al 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 -

a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint
Término Descripción
size System.Windows.Size

Radio x e y del arco.
rotationAngle System.Double

Rotación de la elipse, en grados.
isLargeArcFlag Establézcalo en 1 si el ángulo del arco debe ser de 180 grados o superior; De lo contrario, establezca en 0.
sweepDirectionFlag Establézcalo en 1 si el arco se dibuja en una dirección angular positiva; De lo contrario, establezca en 0.
endPoint System.Windows.Point

Punto hacia el cual se traza el arco.

Comando Cerrar

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

Sintaxis
Z

- o -

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 -

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, también puede usar los siguientes valores especiales. Estos valores distinguen mayúsculas de minúsculas.

La Infinity representa Double.PositiveInfinity.

El símbolo -Infinity representa Double.NegativeInfinity.

NaN representa Double.NaN.

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

Consulte también