Condividi tramite


Sintassi di markup del percorso

I percorsi vengono discussi nella Panoramica di Forme e Disegno di base in WPF e nella Panoramica della Geometria. Tuttavia, questo argomento descrive in dettaglio il potente e complesso mini-linguaggio che è possibile utilizzare per specificare le geometrie dei percorsi in modo più compatto usando XAML (Extensible Application Markup Language).

Prerequisiti

Per comprendere questo argomento, è necessario avere familiarità con le funzionalità di base degli Geometry oggetti. Per altre informazioni, vedere Cenni preliminari sulla geometria .

Mini-Languages StreamGeometry e PathFigureCollection

WPF offre due classi che forniscono mini-linguaggi per la descrizione dei percorsi geometrici: StreamGeometry e PathFigureCollection.

  • Si utilizza il mini-linguaggio StreamGeometry quando si imposta una proprietà di tipo Geometry, ad esempio la proprietà Clip di un oggetto UIElement o la proprietà Data di un elemento Path. Nell'esempio seguente viene utilizzata la sintassi degli attributi per creare un oggetto StreamGeometry.

    <Path Stroke="Black" Fill="Gray"
          Data="M 10,100 C 10,300 300,-200 300,100" />
    
  • Si usa il PathFigureCollection mini-linguaggio quando si imposta la proprietà Figures di un PathGeometry. Nell'esempio seguente viene utilizzata una sintassi di attributo per creare un PathFigureCollection oggetto per un oggetto PathGeometry.

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

Come si può vedere negli esempi precedenti, le due mini-lingue sono molto simili. È sempre possibile usare un PathGeometry oggetto in qualsiasi situazione in cui è possibile usare un StreamGeometryoggetto , quindi quale usare? Usare un oggetto StreamGeometry quando non è necessario modificare il percorso dopo averlo creato; usare un oggetto PathGeometry se è necessario modificare il percorso.

Per altre informazioni sulle differenze tra PathGeometry oggetti e StreamGeometry , vedere Cenni preliminari sulla geometria.

Nota sugli spazi vuoti

Per brevità, viene mostrato un singolo spazio nelle sezioni della sintassi che seguono, ma anche più spazi sono accettabili ovunque venga visualizzato un singolo spazio.

Due numeri non devono effettivamente essere separati da una virgola o da uno spazio vuoto, ma questa operazione può essere eseguita solo quando la stringa risultante non è ambigua. Ad esempio, 2..3 è in realtà due numeri: "2". E ".3". Analogamente, 2-3 è "2" e "-3". Gli spazi non sono necessari prima o dopo i comandi.

Sintassi

La sintassi di utilizzo degli attributi XAML (Extensible Application Markup Language) per un StreamGeometry oggetto è costituita da un valore facoltativo FillRule e da una o più descrizioni di figura.

Utilizzo dell'attributo XAML StreamGeometry
< objectproperty="[ fillRule] figureDescription[ figureDescription]* " ... />

La sintassi di utilizzo degli attributi XAML (Extensible Application Markup Language) per un PathFigureCollection oggetto è costituita da una o più descrizioni di figura.

Uso dell'attributo PathFigureCollection in XAML
< objectproperty="figureDescription[ figureDescription]* " ... />
Termine Descrizione
fillRule System.Windows.Media.FillRule

Specifica se StreamGeometry utilizza il EvenOdd o NonzeroFillRule.

- F0 specifica la EvenOdd regola di riempimento.
- F1 specifica la Nonzero regola di riempimento.

Se si omette questo comando, il percorso secondario usa il comportamento predefinito, ovvero EvenOdd. Se si specifica questo comando, è necessario inserirlo per primo.
descrizioneFigura Figura composta da un comando di spostamento, da comandi di disegno e da un comando di chiusura facoltativo.

moveCommand drawCommands [ closeCommand ]
moveCommand Comando di spostamento che specifica il punto iniziale della figura. Fare riferimento alla sezione Comando Sposta.
drawCommands Uno o più comandi di disegno che descrivono il contenuto della figura. Vedere la sezione Draw Commands.
closeCommand Comando di chiusura facoltativo che chiude la figura. Vedere la sezione Chiudi comando .

Comando Sposta

Specifica il punto iniziale di una nuova figura.

Sintassi
M puntoDiPartenza

- o -

m puntoDiPartenza
Termine Descrizione
punto di partenza System.Windows.Point

Punto iniziale di una nuova figura.

Un carattere maiuscolo M indica che startPoint è un valore assoluto; un carattere minuscolo m indica che startPoint è un offset al punto precedente o (0,0) se non esiste alcun valore. Se si elencano più punti dopo il comando di spostamento, una riga viene disegnata in questi punti anche se è stato specificato il comando della riga.

Comandi di disegno

Un comando di disegno può essere costituito da diversi comandi di forma. Sono disponibili i comandi di forma seguenti: linea, linea orizzontale, linea verticale, curva di Bézier cubica, curva di Bézier quadratica, curva di Bézier cubica liscia, curva quadratica di Bézier uniforme e arco ellittico.

È possibile immettere ogni comando usando una lettera maiuscola o minuscola: le lettere maiuscole indicano valori assoluti e lettere minuscole indicano valori relativi: i punti di controllo per tale segmento sono relativi al punto finale dell'esempio precedente.

Suggerimento

Quando si immette in sequenza più comandi dello stesso tipo, è possibile omettere la voce di comando duplicata; ad esempio, L 100,200 300,400 equivale a L 100,200 L 300,400.

Comando da riga

Crea una linea retta tra il punto corrente e il punto finale specificato. l 20 30 e L 20,30 sono esempi di comandi da riga validi.

Sintassi
L Endpoint

- o -

l Endpoint
Termine Descrizione
Endpoint System.Windows.Point

Punto finale della linea.

Un carattere maiuscolo L indica che endPoint è un valore assoluto; un carattere minuscolo l indica che endPoint è un offset al punto precedente o (0,0) se non esiste alcun valore.

Comando riga orizzontale

Crea una linea orizzontale tra il punto corrente e la coordinata x specificata. H 90 è un esempio di un comando della riga orizzontale valido.

Sintassi
H x

- o -

h x
Termine Descrizione
x System.Double

Coordinata x del punto finale della linea.

Un carattere maiuscolo H indica che x è un valore assoluto; un carattere minuscolo h indica che x è un offset al punto precedente o (0,0) se non esiste alcun valore.

Comando riga verticale

Crea una linea verticale tra il punto corrente e la coordinata y specificata. v 90 è un esempio di comando da riga verticale valido.

Sintassi
V

- o -

v
Termine Descrizione
e System.Double

La coordinata y del punto finale della linea.

Un carattere maiuscolo V indica che y è un valore assoluto; un carattere minuscolo v indica che y è un offset al punto precedente o (0,0) se non esiste alcun valore.

Comando della curva di Bézier cubica

Crea una curva di Bézier cubica tra il punto corrente e il punto finale specificato utilizzando i due punti di controllo specificati (controlPoint1 e controlPoint2). C 100,200 200,400 300,200 è un esempio di comando di curva valido.

Sintassi
C controlPoint1controlPoint2endPoint

- o -

c controlPoint1controlPoint2endPoint
Termine Descrizione
controlPoint1 System.Windows.Point

Primo punto di controllo della curva, che determina la tangente iniziale della curva.
controlPoint2 System.Windows.Point

Secondo punto di controllo della curva, che determina la tangente finale della curva.
endPoint System.Windows.Point

Punto a cui viene disegnata la curva.

Comando Curva di Bézier quadratico

Crea una curva quadratica di Bézier tra il punto corrente e il punto finale specificato usando il punto di controllo specificato (controlPoint). q 100,200 300,200 è un esempio di un comando di curva di Bézier quadratico valido.

Sintassi
Q controlPoint endPoint

- o -

q controlPoint endPoint
Termine Descrizione
controlPoint System.Windows.Point

Punto di controllo della curva, che determina le tangenti iniziali e finali della curva.
endPoint System.Windows.Point

Punto a cui viene disegnata la curva.

Comando curva di Bézier cubica uniforme

Crea una curva di Bézier cubica tra il punto corrente e il punto finale specificato. Si assume che il primo punto di controllo sia la riflessione del secondo punto di controllo del comando precedente rispetto al punto corrente. Se non è presente alcun comando precedente o se il comando precedente non era un comando di curva di Bézier cubica o un comando di curva di Bézier cubica uniforme, si supponga che il primo punto di controllo sia coincidente con il punto corrente. Il secondo punto di controllo, il punto di controllo per la fine della curva, viene specificato da controlPoint2. Ad esempio, S 100,200 200,300 è un valido comando di curva Bézier cubica.

Sintassi
S controlPoint2endPoint

- o -

s controlPoint2endPoint
Termine Descrizione
controlPoint2 System.Windows.Point

Punto di controllo della curva, che determina la tangente finale della curva.
endPoint System.Windows.Point

Punto a cui viene disegnata la curva.

Comando curva di Bézier quadratica uniforme

Crea una curva di Bézier quadratica tra il punto corrente e il punto finale specificato. Si presuppone che il punto di controllo sia la riflessione del punto di controllo del comando precedente in relazione al punto attuale. Se non è presente alcun comando precedente o se il comando precedente non era un comando di curva di Bézier quadratico o un comando di curva di Bézier quadratico uniforme, il punto di controllo coincide con il punto corrente.

Sintassi
T endPoint

- o -

t endPoint
Termine Descrizione
endPoint System.Windows.Point

Punto a cui viene disegnata la curva.

Comando Arc ellittico

Crea un arco ellittico tra il punto corrente e il punto finale specificato.

Sintassi
A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

- o -

a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint
Termine Descrizione
size System.Windows.Size

Raggio x e y dell'arco.
rotationAngle System.Double

Rotazione dell'ellisse, espressa in gradi.
isLargeArcFlag Impostare su 1 se l'angolo dell'arco deve essere di 180 gradi o superiore; in caso contrario, impostare su 0.
sweepDirectionFlag Impostare su 1 se l'arco viene disegnato in direzione dell'angolo positivo; in caso contrario, impostare su 0.
endPoint System.Windows.Point

Punto a cui viene disegnato l'arco.

Comando Close

Termina la figura corrente e crea una linea che collega il punto corrente al punto iniziale della figura. Questo comando crea una giunzione linea (angolo) tra l'ultimo segmento e il primo segmento della figura.

Sintassi
Z

- o -

z

Sintassi del punto

Descrive le coordinate x e y di un punto in cui (0,0) è l'angolo superiore sinistro.

Sintassi
x , y

- o -

x y
Termine Descrizione
x System.Double

Coordinata x del punto.
y System.Double

Coordinata y del punto.

Valori speciali

Anziché un valore numerico standard, è anche possibile usare i valori speciali seguenti. Questi valori fanno distinzione tra maiuscole e minuscole.

Infinito rappresenta Double.PositiveInfinity.

-Infinity rappresenta Double.NegativeInfinity.

NaN rappresenta Double.NaN.

È anche possibile usare la notazione scientifica. Ad esempio, +1.e17 è un valore valido.

Vedere anche