Condividi tramite


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

System.Windows.Media.FillRule

Specifica se StreamGeometry utilizza EvenOdd o Nonzero FillRule.

  • F0 specifica la regola di riempimento EvenOdd.

  • F1 specifica la regola di riempimento Nonzero.

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

startPoint

oppure

startPoint

Termine

Descrizione

startPoint

System.Windows.Point

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

endPoint

oppure

endPoint

Termine

Descrizione

endPoint

System.Windows.Point

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

System.Double

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

System.Double

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

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

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

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

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

System.Windows.Point

Punto di controllo della curva, che ne determina la tangente finale.

endPoint

System.Windows.Point

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

System.Windows.Point

Punto di controllo della curva, che ne determina la tangente iniziale.

endPoint

System.Windows.Point

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

System.Windows.Size

Raggi x e 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 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

System.Double

Coordinata x del punto.

y

System.Double

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.

È inoltre possibile utilizzare la notazione scientifica. +1.e17, ad esempio, è un valore valido.

Vedere anche

Riferimenti

Path

StreamGeometry

PathGeometry

PathFigureCollection

Concetti

Cenni preliminari sugli oggetti Shape e sulle funzionalità di disegno di base di WPF

Cenni preliminari sulle classi Geometry

Altre risorse

Procedure relative agli oggetti Geometry