Sintassi di markup del percorso
I percorsi sono illustrati in Cenni preliminari sugli oggetti Shape e sulle funzionalità di disegno di base di WPF e in Cenni preliminari sulle classi Geometry; tuttavia, in questo argomento viene fornita una descrizione dettagliata del minilinguaggio, uno strumento potente e complesso che è possibile utilizzare per specificare le geometrie di percorso in modo più conciso tramite Extensible Application Markup Language (XAML).
Di seguito sono elencate le diverse sezioni di questo argomento.
Prerequisiti
Per comprendere questo argomento, è necessario avere familiarità con le funzionalità di base degli oggetti Geometry. Per ulteriori informazioni, vedere Cenni preliminari sulle classi Geometry.
Minilinguaggi StreamGeometry e PathFigureCollection
In WPF sono disponibili due classi che forniscono minilinguaggi per la descrizione di percorsi geometrici: StreamGeometry e PathFigureCollection.
È possibile utilizzare il minilinguaggio StreamGeometry per impostare una proprietà di tipo Geometry, ad esempio la proprietà Clip di un oggetto UIElement oppure la proprietà Data di un elemento Path. Nell'esempio riportato di seguito viene utilizzata la sintassi dell'attributo per creare un oggetto StreamGeometry.
<Path Stroke="Black" Fill="Gray" Data="M 10,100 C 10,300 300,-200 300,100" />
È possibile utilizzare il minilinguaggio PathFigureCollection per impostare la proprietà Figures di un oggetto PathGeometry. Nell'esempio riportato di seguito la sintassi di un attributo viene utilizzata per creare un oggetto PathFigureCollection 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 minilinguaggi sono molto simili. Dal momento che è sempre possibile utilizzare PathGeometry in tutte le situazioni in cui può essere utilizzato StreamGeometry è necessario definire i casi in cui utilizzare i due minilinguaggi. È opportuno utilizzare StreamGeometry quando non è necessario modificare il percorso dopo averlo creato; utilizzare invece PathGeometry se è necessario modificare il percorso.
Per ulteriori informazioni sulle differenze tra PathGeometry e StreamGeometry, vedere Cenni preliminari sulle classi Geometry.
Nota sugli spazi vuoti
Per ragioni di brevità, nelle successive sezioni relative alla sintassi viene mostrato uno spazio singolo, anche se, in tutti i casi in cui viene indicato uno spazio singolo è possibile utilizzare anche più spazi.
Non è necessario separare due numeri con una virgola o uno spazio vuoto; tuttavia, quest'operazione può essere eseguita solo se la stringa ottenuta non è ambigua. La stringa 2..3, ad esempio, è composta da due numeri: "2." e ".3". Analogamente, la stringa 2-3 è composta dai numeri "2" e "-3". Non è necessario inserire spazi né prima né dopo i comandi.
Sintassi
La sintassi di utilizzo di un attributo Extensible Application Markup Language (XAML) di StreamGeometry è composta da un valore FillRule facoltativo e da una o più descrizioni di figure.
Utilizzo degli attributi XAML StreamGeometry |
---|
<oggetto proprietà="[fillRule] figureDescription[figureDescription]*" ... /> |
La sintassi di utilizzo di un attributo Extensible Application Markup Language (XAML) di PathFigureCollection è composta da una o più descrizioni di figure.
Utilizzo degli attributi XAML PathFigureCollection |
---|
<oggetto proprietà="figureDescription[figureDescription]*" ... /> |
Termine |
Descrizione |
---|---|
fillRule |
Specifica se StreamGeometry utilizza EvenOdd o Nonzero FillRule. Se si omette questo comando, il percorso secondario utilizzerà il comportamento predefinito, ossia EvenOdd. Se il comando viene specificato, è necessario inserirlo per primo. |
figureDescription |
Figura costituita da un comando di spostamento, da alcuni comandi di disegno e da un comando di chiusura facoltativo. moveCommanddrawCommands [closeCommand] |
moveCommand |
Comando di spostamento che specifica il punto di inizio della figura. Vedere la sezione Comando Move. |
drawCommands |
Uno o più comandi di disegno che consentono di descrivere il contenuto della figura. Vedere la sezione Comandi Draw. |
closeCommand |
Comando facoltativo di chiusura che consente di chiudere la figura. Vedere la sezione Comando Close. |
Comando Move
Specifica il punto di inizio di una nuova figura.
Sintassi |
---|
M startPoint oppure m startPoint |
Termine |
Descrizione |
---|---|
startPoint |
Punto di inizio di una nuova figura. |
Una M maiuscola indica che startPoint è un valore assoluto; una m minuscola indica che startPoint è un offset per il punto precedente oppure (0,0) in assenza di punti di inizio. 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 seguenti comandi di forma: linea, linea orizzontale, linea verticale, curva di Bezier cubica, curva di Bezier quadratica, curva di Bezier cubica continua, curva di Bezier quadratica continua e arco ellittico.
Per inserire ciascun comando, utilizzare 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 del precedente esempio. Quando si inseriscono più comandi dello stesso tipo in sequenza, è possibile evitare di ripetere l'immissione del comando; 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
Consente di creare una linea retta tra il punto corrente e il punto finale specificato. l 20 30 e L 20,30 sono esempi di comandi line validi.
Sintassi |
---|
L endPoint oppure l endPoint |
Termine |
Descrizione |
---|---|
endPoint |
Punto finale della linea. |
Comando Horizontal Line
Consente di creare una linea orizzontale tra il punto corrente e la coordinata x specificata. H 90 è un esempio di comando di linea orizzontale valido.
Sintassi |
---|
H x oppure h x |
Termine |
Descrizione |
---|---|
x |
Coordinata x del punto finale della linea. |
Comando Vertical Line
Consente di creare una linea verticale tra il punto corrente e la coordinata y specificata. v 90 è un esempio di comando di linea verticale valido.
Sintassi |
---|
V y oppure v y |
Termine |
Descrizione |
---|---|
y |
Coordinata y del punto finale della linea. |
Comando Cubic Bezier Curve
Consente di creare una curva di Bézier cubica tra il punto corrente e il punto finale specificato utilizzando i due punti di controllo indicati (controlPoint1 e controlPoint2). C 100,200 200,400 300,200 è un esempio di comando di curva valido.
Sintassi |
---|
C controlPoint1 controlPoint2 endPoint oppure c controlPoint1 controlPoint2 endPoint |
Termine |
Descrizione |
---|---|
controlPoint1 |
Primo punto di controllo della curva, che determina la tangente iniziale della curva. |
controlPoint2 |
Secondo punto di controllo della curva, che determina la tangente finale della curva. |
endPoint |
Punto verso il quale viene disegnata la curva. |
Comando Quadratic Bezier Curve
Consente di creare una curva di Bézier quadratica tra il punto corrente e il punto finale specificato utilizzando il punto di controllo indicato (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 |
Punto di controllo della curva, che determina le tangenti iniziale e finale della curva. |
endPoint |
Punto verso il quale viene disegnata la curva. |
Comando Smooth cubic Bezier curve
Consente di creare una curva di Bezier continua 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 utilizzato alcun comando o se il comando precedente non era un comando di curva di Bezier cubica o un comando di curva di Bezier cubica continua, il punto corrente verrà considerato il primo punto di controllo. Il secondo punto di controllo, quello con cui la curva termina, è specificato da controlPoint2. S 100,200 200,300 ad esempio, è un comando di curva di Bezier cubica continua valido.
Sintassi |
---|
S controlPoint2 endPoint oppure s controlPoint2 endPoint |
Termine |
Descrizione |
---|---|
controlPoint2 |
Punto di controllo della curva, che ne determina la tangente finale. |
endPoint |
Punto verso il quale viene disegnata la curva. |
Comando Smooth Quadratic Bezier Curve
Consente di creare una curva di Bezier quadratica continua 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 utilizzato alcun comando o se il comando precedente non era un comando di curva di Bezier quadratica o un comando di curva di Bezier quadratica continua, il punto di controllo coinciderà con il punto corrente.
Sintassi |
---|
T controlPoint endPoint - oppure - t controlPoint endPoint |
Termine |
Descrizione |
---|---|
controlPoint |
Punto di controllo della curva, che ne determina la tangente iniziale. |
endPoint |
Punto verso il quale viene disegnata la curva. |
Comando Elliptical Arc
Consente di creare 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 |
Raggi x e y dell'arco. |
rotationAngle |
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 |
Punto verso il quale viene disegnato l'arco. |
Comando Close
Consente di terminare la figura corrente e di creare una linea che collega il punto corrente al punto iniziale della figura. Questo comando consente di creare un line-join (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.
Sintassi |
---|
x,y - oppure - x y |
Termine |
Descrizione |
---|---|
x |
Coordinata x del punto. |
y |
Coordinata y del punto. |
Valori speciali
Al posto di un valore numerico standard, è possibile utilizzare anche i valori speciali indicati di seguito. Per questi valori viene effettuata la distinzione tra maiuscole e minuscole.
Infinity
Rappresenta il campo Double.PositiveInfinity.-Infinity
Rappresenta il campo Double.NegativeInfinity.NaN
Rappresenta il campo Double.NaN.
È inoltre possibile utilizzare la notazione scientifica. +1.e17, ad esempio, è un valore valido.
Vedere anche
Riferimenti
Concetti
Cenni preliminari sugli oggetti Shape e sulle funzionalità di disegno di base di WPF
Cenni preliminari sulle classi Geometry