Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 (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 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 controlPoint
2. Ad esempio, S 100,200 200,300
è un valido comando di curva Bézier cubica.
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 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
.NET Desktop feedback