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.
Scopri i comandi di spostamento e disegno (un mini-linguaggio) che puoi usare per specificare geometrie di percorso come valore dell'attributo XAML. I comandi di spostamento e disegno vengono usati da molti strumenti di progettazione e grafica che possono restituire un elemento grafico vettoriale o una forma, come formato di serializzazione e interscambio.
Proprietà che utilizzano stringhe di comando per il movimento e il disegno
La sintassi dei comandi di spostamento e disegno è supportata da un convertitore di tipi interno per XAML, che analizza i comandi e produce una rappresentazione grafica in fase di esecuzione. Questa rappresentazione è fondamentalmente un set finito di vettori pronti per la presentazione. I vettori stessi non completano i dettagli della presentazione; sarà comunque necessario impostare altri valori sugli elementi. Per un oggetto Path sono necessari anche valori per Fill, Stroke e altre proprietà e quindi che Path deve essere connesso in qualche modo all'albero visuale. Per un oggetto PathIcon , impostare la proprietà Foreground .
In Windows Runtime sono disponibili due proprietà che possono usare una stringa che rappresenta i comandi di spostamento e disegno: Path.Data e PathIcon.Data. Se imposti una di queste proprietà specificando i comandi di spostamento e disegno, in genere la imposti come valore dell'attributo XAML insieme ad altri attributi obbligatori di tale elemento. Senza entrare nelle specifiche, ecco l'aspetto seguente:
<Path x:Name="Arrow" Fill="White" Height="11" Width="9.67"
Data="M4.12,0 L9.67,5.47 L4.12,10.94 L0,10.88 L5.56,5.47 L0,0.06" />
Uso di comandi di spostamento e disegno rispetto all'uso di pathGeometry
Per XAML di Windows Runtime, i comandi di spostamento e disegno producono un PathGeometry con un singolo oggetto PathFigure con un valore della proprietà Figures . Ogni comando di disegno produce una classe derivata PathSegment nella raccolta di Segmenti di quel singolo PathFigure, il comando di spostamento modifica StartPoint e l'esistenza di un comando di chiusura imposta IsClosed su true. È possibile esplorare questa struttura come modello a oggetti se si esaminano i valori dei dati in fase di esecuzione.
Sintassi di base
La sintassi per i comandi di spostamento e disegno può essere riepilogata nel modo seguente:
- Iniziare con una regola di riempimento facoltativa. In genere si specifica questa opzione solo se non si vuole impostare l'impostazione predefinita EvenOdd . Altre informazioni su EvenOdd più avanti.
- Specificare esattamente un comando di spostamento.
- Specificare uno o più comandi di disegno.
- Specificare un comando di chiusura. È possibile omettere un comando di chiusura, ma questo lascerebbe la figura aperta (cosa inusuale).
Le regole generali di questa sintassi sono:
- Ogni comando è rappresentato da una sola lettera.
- Tale lettera può essere maiuscola o minuscola. In caso di problemi, come verrà descritto.
- Ogni comando, ad eccezione del comando close, è in genere seguito da uno o più numeri.
- Se più di un numero per un comando, separare con una virgola o uno spazio.
[fillRule]moveCommanddrawCommand[drawCommand*][closeCommand]
Molti dei comandi di disegno usano punti, dove si specifica un valore x,y . Ogni volta che viene visualizzato un segnaposto *points , è possibile presupporre che si assegnano due valori decimali per il valore x,y di un punto.
Lo spazio vuoto può essere spesso omesso quando il risultato non è ambiguo. È infatti possibile omettere tutti gli spazi vuoti se si usano virgole come separatore per tutti i set di numeri (punti e dimensioni). Ad esempio, questo utilizzo è legale: F1M0,58L2,56L6,60L13,51L15,53L6,64z. Ma è più tipico includere spazi vuoti tra i comandi per maggiore chiarezza.
Non usare virgole come separatore decimale per i numeri decimali; la stringa di comando viene interpretata da XAML e non tiene conto delle convenzioni di formattazione dei numeri cultura-specifiche che divergono da quelle utilizzate nelle impostazioni locali en-us.
Specifiche della sintassi
Regola di riempimento
Esistono due valori possibili per la regola di riempimento facoltativa: F0 o F1. (F è sempre maiuscolo. F0 è il valore predefinito; produce il comportamento di riempimento EvenOdd, quindi in genere non viene specificato. Usare F1 per ottenere il comportamento di riempimento diverso da zero . Questi valori di riempimento sono allineati ai valori dell'enumerazione FillRule .
Comando Sposta
Specifica il punto iniziale di una nuova figura.
| Sintassi |
|---|
M
startPoint o m
startPoint |
| Termine | Description |
|---|---|
| startPoint |
Punto Il punto di partenza di una nuova figura. |
Un M maiuscolo indica che startPoint è una coordinata assoluta; un valore m minuscolo indica che startPoint è un offset rispetto al punto precedente oppure (0,0) se non è presente alcun punto precedente.
Nota È possibile specificare più punti dopo il comando di spostamento. Una riga viene disegnata in questi punti come se fosse stato specificato il comando della riga. Tuttavia questo non è uno stile consigliato; usare invece il comando della riga dedicata.
Comandi di disegno
Un comando di disegno può essere costituito da diversi comandi di forma: linea, linea orizzontale, linea verticale, curva di Bézier cubica, curva quadratica di Bézier, curva di Bézier cubica liscia, curva quadratica di Bézier uniforme e arco ellittico.
Per tutti i comandi di disegno, la distinzione tra maiuscole e minuscole è importante. Le lettere maiuscole indicano coordinate assolute e lettere minuscole indicano le coordinate relative al comando precedente.
I punti di controllo per un segmento sono relativi al punto finale del segmento 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.
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. Definisce l'equivalente di un oggetto LineGeometry .
| Sintassi |
|---|
L
Endpoint o l
Endpoint |
| Termine | Description |
|---|---|
| Endpoint |
Punto Punto finale della linea. |
Comando della 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 | Description |
|---|---|
| x |
Doppio Coordinata x del punto finale della linea. |
Comando linea verticale
Crea una linea verticale tra il punto corrente e la coordinata y specificata.
v 90 è un esempio di comando della riga verticale valido.
| Sintassi |
|---|
V
y -o- v
y |
| Termine | Description |
|---|---|
| y |
Double Coordinata y del punto finale della linea. |
Comando curva 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 un comando di curva valido. Definisce l'equivalente di un oggetto PathGeometry con un oggetto BezierSegment .
| Sintassi |
|---|
C
controlPoint1controlPoint2endPoint -o- c
controlPoint1controlPoint2endPoint |
| Termine | Description |
|---|---|
| controlPoint1 |
Punto Primo punto di controllo della curva, che determina la tangente iniziale della curva. |
| controlPoint2 |
Punto Secondo punto di controllo della curva, che determina la tangente finale della curva. |
| endpoint |
Punto Punto a cui viene disegnata la curva. |
Comando curva quadratica bézier
Crea una curva quadratica di Bézier tra il punto corrente e il punto finale specificato utilizzando il punto di controllo specificato (controlPoint).
q 100,200 300,200 è un esempio di un comando di curva di Bézier quadratico valido. Definisce l'equivalente di un PathGeometry con QuadraticBezierSegment.
| Sintassi |
|---|
Q
controlPoint endPoint -o- q
controlPoint endPoint |
| Termine | Description |
|---|---|
| controlPoint |
Punto Punto di controllo della curva, che determina le tangenti iniziali e finali della curva. |
| endpoint |
Punto 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. È ipotizzato 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, ovvero il punto di controllo per la fine della curva, è specificato da controlPoint2. Ad esempio, S 100,200 200,300 è un comando valido per una curva di Bézier cubica. Questo comando definisce l'equivalente di pathGeometry con un bezierSegment in cui era presente un segmento di curva precedente.
| Sintassi |
|---|
S
controlPoint2endPoint -o- s
controlPoint2 endPoint |
| Termine | Description |
|---|---|
| controlPoint2 |
Punto Punto di controllo della curva, che determina la tangente finale della curva. |
| endpoint |
Punto Punto a cui viene disegnata la curva. |
Comando curva di Bézier quadratica uniforme
Crea una curva quadratica di Bézier tra il punto corrente e il punto finale specificato. Si presume che il punto di controllo sia il riflesso del 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 quadratica o un comando di curva di Bézier quadratica uniforme, il punto di controllo coincide con il punto corrente. Questo comando definisce l'equivalente di un PathGeometry con un QuadraticBezierSegment, dove era presente un segmento di curva precedente.
| Sintassi |
|---|
T
controlPointendPoint -o- t
controlPointendPoint |
| Termine | Description |
|---|---|
| controlPoint |
Punto Punto di controllo della curva, che determina l'inizio e la tangente della curva. |
| endpoint |
Punto Punto a cui viene disegnata la curva. |
Comando arco ellittico
Crea un arco ellittico tra il punto corrente e il punto finale specificato. Definisce l'equivalente di un oggetto PathGeometry con un oggetto ArcSegment.
| Sintassi |
|---|
A
sizerotationAngleisLargeArcFlagsweepDirectionFlagendPoint -o- a
sizerotationAngleisLargeArcFlagsweepDirectionFlagendPoint |
| Termine | Description |
|---|---|
| dimensione |
Dimensione Raggio x e raggio y dell'arco. |
| rotationAngle |
Doppio 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 |
Punto Punto a cui viene disegnato l'arco. |
Comando Chiudi
Termina la figura corrente e crea una linea che collega il punto corrente al punto iniziale della figura. Questo comando crea una giunzione di linea tra l'ultimo segmento e il primo segmento della figura.
| Sintassi |
|---|
Z -o- z |
Sintassi di punto
Descrive la coordinata x e la coordinata y di un punto. Vedi anche Point.
| Sintassi |
|---|
|
x,y -o- xy |
| Termine | Description |
|---|---|
| x |
Doppio Coordinata x del punto. |
| y |
Doppio Coordinata y del punto. |
Note aggiuntive
Anziché un valore numerico standard, è anche possibile usare i valori speciali seguenti. Questi valori sono sensibili alle maiuscole e minuscole.
- Infinity: rappresenta PositiveInfinity.
- -Infinity: rappresenta NegativeInfinity.
- NaN: rappresenta NaN.
Anziché usare decimali o numeri interi, è possibile usare la notazione scientifica. Ad esempio, +1.e17 è un valore valido.
Strumenti di progettazione che producono comandi di spostamento e disegno
L'uso dello strumento Penna e di altri strumenti di disegno in Blend per Microsoft Visual Studio 2015 genererà un oggetto Path , con comandi di spostamento e disegno.
È possibile che vengano visualizzati i dati dei comandi di spostamento e disegno esistenti in alcune delle parti di controllo definite nei modelli predefiniti XAML di Windows Runtime per i controlli. Ad esempio, alcuni controlli usano un Oggetto PathIcon con i dati definiti come comandi di spostamento e disegno.
Sono disponibili utilità di esportazione o plug-in per altri strumenti di progettazione di grafica vettoriale di uso comune che possono restituire il vettore in formato XAML. Questi in genere creano oggetti Path in un contenitore di layout, con comandi di spostamento e disegno per Path.Data. Nel codice XAML possono essere presenti più elementi Path in modo che sia possibile applicare pennelli diversi. Molti di questi strumenti di esportazione o plug-in sono stati originariamente scritti per XAML di Windows Presentation Foundation (WPF) o Silverlight, ma la sintassi del percorso XAML è identica a XAML di Windows Runtime. In genere, puoi usare blocchi di XAML da un utilità di esportazione e incollarli direttamente in una pagina XAML di Windows Runtime. Tuttavia, non sarai in grado di usare radialGradientBrush, se faceva parte del codice XAML convertito, perché XAML di Windows Runtime non supporta tale pennello.