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 |
---|
< oggetto property =" [ 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 |
---|
< oggetto property =" 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 |
---|
M startPointo m startPoint |
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.
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 Line
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 Endpointo 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 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 |
---|
H xo 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 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 |
---|
V yo v y |
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 (controlPoint
1 e controlPoint
2). C 100,200 200,400 300,200
è un esempio di comando di curva valido.
Sintassi |
---|
C controlPoint 1controlPoint 2endPoint o c controlPoint 1controlPoint 2endPoint |
Termine | Descrizione |
---|---|
controlPoint 1 |
System.Windows.Point Primo punto di controllo della curva, che determina la tangente iniziale della curva. |
controlPoint 2 |
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 o 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 controlPoint
2. Ad esempio, S 100,200 200,300
è un comando di curva di Bézier cubica valido.
Sintassi |
---|
S controlPoint 2endPoint o s controlPoint 2endPoint |
Termine | Descrizione |
---|---|
controlPoint 2 |
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 o 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 o 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 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. 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
.NET Desktop feedback