Sintassi di markup del percorso

I percorsi sono descritti in Forme e Disegno di base in Wpf Overview (Panoramica della geometria) e in questo argomento vengono descritti in dettaglio il mini-linguaggio potente e complesso che è possibile usare per specificare geometrie di percorso 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 sulle classi Geometry.

Mini linguaggi StreamGeometry e PathFigureCollection

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

  • Usare il mini-linguaggio quando si imposta una proprietà di tipo , ad esempio la proprietà di un oggetto o la proprietà di un elemento .You use the StreamGeometry mini-language when setting a property of type Geometry, such as the Clip property of a UIElement or the Data property of a Path element. 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" />
    
  • Usare il PathFigureCollection mini-linguaggio quando si imposta la Figures proprietà di un oggetto 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ò notare dagli esempi precedenti, i due mini-linguaggi 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 se PathGeometry è 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à nelle sezioni di sintassi seguenti viene illustrato uno spazio singolo, ma sono accettabili più spazi quando viene visualizzato uno spazio singolo.

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 né prima né 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 degli attributi 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.

Utilizzo degli attributi XAML PathFigureCollection
<objectproperty="figureDescription[ figureDescription]* " ... />
Termine Descrizione
fillRule System.Windows.Media.FillRule

Specifica se StreamGeometry utilizza o NonzeroEvenOddFillRule.

- 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.
figureDescription Figura costituita da un comando di spostamento, da alcuni comandi di disegno e da un comando di chiusura facoltativo.

moveCommand drawCommands [ closeCommand ]
moveCommand Comando di spostamento che specifica il punto iniziale della figura. Vedere la sezione Sposta comando .
drawCommands Uno o più comandi di disegno che descrivono il contenuto della figura. Vedere la sezione Draw Commands .See the Draw Commands section.
closeCommand Comando facoltativo di chiusura che consente di chiudere la figura. Vedere la sezione Chiudi comando .

Comando Move

Specifica il punto iniziale di una nuova figura.

Sintassi
MstartPoint

- oppure -

mstartPoint
Termine Descrizione
startPoint 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 dopo il comando di spostamento vengono elencati più punti, verrà tracciata una linea in direzione di quei punti, anche se il comando della linea è stato specificato.

Comandi Draw

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 continua, curva di Bézier quadratica continua e arco ellittico.

Per inserire ciascun comando, usare una lettera maiuscola o una lettera minuscola: le lettere maiuscole indicano valori assoluti, quelle minuscole valori relativi. I punti di controllo del segmento specificato si riferiscono al punto finale dell'esempio precedente. 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. Nella tabella riportata di seguito vengono descritti i comandi move e draw.

Comando Line

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

Sintassi
LendPoint

- oppure -

lendPoint
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 Horizontal Line

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

Sintassi
Hx

- oppure -

hx
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 Vertical Line

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

Sintassi
Vy

- oppure -

vy
Termine Descrizione
y System.Double

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 Cubic Bezier Curve

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
CcontrolPoint1controlPoint2endPoint

- oppure -

ccontrolPoint1controlPoint2endPoint
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 verso il quale viene disegnata la curva.

Comando Quadratic Bezier Curve

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 comando di curva di Bézier quadratica valido.

Sintassi
Q controlPoint endPoint

- oppure -

q controlPoint endPoint
Termine Descrizione
controlPoint System.Windows.Point

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

Punto verso il quale viene disegnata la curva.

Comando Smooth cubic Bezier curve

Crea una curva di Bézier cubica tra il punto corrente e il punto finale specificato. Il primo punto di controllo viene considerato come reflection del secondo punto di controllo del comando precedente relativo al punto corrente. Se in precedenza non è stato usato alcun comando o se il comando precedente non era un comando di curva di Bézier cubica o un comando di curva di Bézier cubica continua, il punto di controllo coinciderà 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 comando di curva di Bézier cubica valido.

Sintassi
ScontrolPoint2endPoint

- oppure -

scontrolPoint2endPoint
Termine Descrizione
controlPoint2 System.Windows.Point

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

Punto verso il quale viene disegnata la curva.

Comando Smooth Quadratic Bezier Curve

Crea una curva di Bézier quadratica tra il punto corrente e il punto finale specificato. Il punto di controllo viene considerato come reflection del punto di controllo del comando precedente relativo al punto corrente. Se in precedenza non è stato usato alcun comando o se il comando precedente non era un comando di curva di Bézier quadratica o un comando di curva di Bézier quadratica continua, il punto di controllo coinciderà con il punto corrente.

Sintassi
T endPoint

- oppure -

t endPoint
Termine Descrizione
endPoint System.Windows.Point

Punto verso il quale viene disegnata la curva.

Comando Elliptical Arc

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

Sintassi
A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

- oppure -

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

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

Rotazione dell'ellisse in gradi.
isLargeArcFlag Impostato su 1 se la misura dell'angolo dell'arco deve essere di 180 gradi o superiore. In caso contrario, impostato su 0.
sweepDirectionFlag Impostato su 1 se l'arco viene tracciato nella direzione di un angolo positivo. In caso contrario, impostato su 0.
endPoint System.Windows.Point

Punto verso cui viene disegnata l'arco.

Comando Close

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

Sintassi
Z

- oppure -

z

Sintassi del punto

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

Sintassi
x , y

- oppure -

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. Per questi valori viene effettuata la distinzione tra maiuscole e minuscole.

Infinito
Rappresenta Double.PositiveInfinity.

-Infinito
Rappresenta Double.NegativeInfinity.

NaN
Rappresenta Double.NaN.

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

Vedi anche