Pfadmarkupsyntax
Pfade werden in Übersicht über Formen und die grundlegenden Funktionen zum Zeichnen in WPF und Übersicht über die Geometrie beschrieben. In diesem Thema wird jedoch ausführlich die leistungsstarke und komplexe Minisprache beschrieben, die Sie verwenden können, um Pfade mit Extensible Application Markup Language (XAML) kompakter anzugeben.
Dieses Thema enthält folgende Abschnitte.
Erforderliche Komponenten
Für dieses Thema sollten Sie mit den grundlegenden Features von Geometry-Objekten vertraut sein. Weitere Informationen finden Sie unter Übersicht über die Geometrie.
Minisprachen StreamGeometry und PathFigureCollection
WPF stellt zwei Klassen zur Verfügung, die Minisprachen bereitstellen, mit denen geometrische Pfade beschrieben werden: StreamGeometry und PathFigureCollection.
Mit der Minisprache StreamGeometry legen Sie eine Eigenschaft vom Typ Geometry fest, wie die Clip-Eigenschaft für ein UIElement oder die Data-Eigenschaft für ein Path-Element. Im folgenden Beispiel wird die Attributsyntax verwendet, um StreamGeometry zu erstellen.
<Path Stroke="Black" Fill="Gray" Data="M 10,100 C 10,300 300,-200 300,100" />
Mit der Minisprache PathFigureCollection legen Sie die Figures-Eigenschaft für eine PathGeometry fest. Im folgenden Beispiel wird eine Attributsyntax verwendet, um PathFigureCollection für PathGeometry zu erstellen.
<Path Stroke="Black" Fill="Gray"> <Path.Data> <PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" /> </Path.Data> </Path>
Wie Sie anhand der vorangehenden Beispiele erkennen können, sind die beiden Minisprachen sehr ähnlich. In jeder Situation, in der Sie PathGeometry verwenden können, könnten Sie auch immer StreamGeometry verwenden. Was sollte also verwendet werden? Verwenden Sie StreamGeometry, wenn Sie den Pfad nach dem Erstellen nicht ändern müssen. Verwenden Sie PathGeometry, wenn eine Änderung des Pfads erforderlich ist.
Weitere Informationen zu den Unterschieden zwischen PathGeometry-Objekten und StreamGeometry-Objekten finden Sie unter Übersicht über die Geometrie.
Hinweis zu Leerzeichen
Aus Platzgründen wird in den folgenden Syntaxabschnitten nur ein Leerzeichen angezeigt, das jedoch auch jeweils durch mehrere Leerzeichen ersetzt werden könnte.
Zwei Zahlen müssen nicht durch ein Komma oder ein Leerzeichen getrennt werden. Dies ist jedoch nur möglich, wenn die resultierende Zeichenfolge eindeutig ist. 2..3 besteht z. B. eigentlich aus zwei Zahlen: "2." und ".3". Ebenso besteht 2-3 aus "2" und "-3". Auch vor oder nach Befehlen sind keine Leerzeichen erforderlich.
Syntax
Die Extensible Application Markup Language (XAML)-Attributverwendungssyntax für StreamGeometry besteht aus einem optionalen FillRule-Wert und einer oder mehreren Abbildungsbeschreibungen.
Verwendung des XAML-Attributs StreamGeometry |
---|
<Objekt Eigenschaft="[fillRule] figureDescription[figureDescription]*" ... /> |
Die Extensible Application Markup Language (XAML)-Attributverwendungssyntax für PathFigureCollection besteht aus einer oder mehreren Abbildungsbeschreibungen.
Verwendung des XAML-Attributs PathFigureCollection |
---|
<Objekt Eigenschaft="figureDescription[figureDescription]*" ... /> |
Begriff |
Beschreibung |
---|---|
fillRule |
Gibt an, ob StreamGeometry die FillRule EvenOdd oder Nonzero verwendet. Wenn Sie diesen Befehl auslassen, verwendet der untergeordnete Pfad das Standardverhalten, nämlich EvenOdd. Wenn Sie diesen Befehl angeben, müssen Sie ihn zunächst platzieren. |
figureDescription |
Eine Abbildung, die aus einem move-Befehl, draw-Befehlen und einem optionalen close-Befehl besteht. moveCommanddrawCommands [closeCommand] |
moveCommand |
Ein move-Befehl, der den Startpunkt der Abbildung angibt. Weitere Informationen finden Sie im Abschnitt move-Befehl. |
drawCommands |
Ein oder mehrere draw-Befehle, die den Inhalt der Abbildung beschreiben. Weitere Informationen finden Sie im Abschnitt draw-Befehle. |
closeCommand |
Ein optionaler close-Befehl, der Abbildungen schließt. Weitere Informationen finden Sie im Abschnitt close-Befehl. |
move-Befehl
Gibt den Startpunkt einer neuen Abbildung an.
Syntax |
---|
M startPoint - oder - m startPoint |
Begriff |
Beschreibung |
---|---|
startPoint |
Der Startpunkt einer neuen Abbildung. |
Ein groß geschriebenes M zeigt an, dass es sich bei startPoint um einen absoluten Wert handelt. Ein klein geschriebenes m zeigt an, dass es sich bei startPoint um einen Offset zum vorherigen Punkt handelt oder um (0,0), wenn keiner vorhanden ist. Wenn Sie nach dem move-Befehl mehrere Punkte auflisten, wird eine Linie zu diesen Punkten gezeichnet, sofern Sie den line-Befehl angegeben haben.
draw-Befehle
Ein draw-Befehl kann aus mehreren shape-Befehlen bestehen. Die folgenden Befehle für Formen sind verfügbar: Linie, horizontale Linie, vertikale Linie, kubische Bézierkurve, quadratische Bézierkurve, glatte kubische Bézierkurve, glatte quadratische Bézierkurve und elliptischer Bogen.
Sie geben jeden Befehl entweder mit einem Großbuchstaben oder mit einem Kleinbuchstaben ein. Großbuchstaben weisen auf absolute Werte und Kleinbuchstaben auf relative Werte hin: Die Kontrollpunkte für dieses Segment sind relativ zum Endpunkt des vorherigen Beispiels. Wenn Sie nacheinander mehrere Befehle desselben Typs eingeben, können Sie den duplizierten Befehlseintrag auslassen. L 100,200 300,400 entspricht z. B. L 100,200 L 300,400. In der folgenden Tabelle werden die Befehle move und draw beschrieben.
line-Befehl
Erstellt eine gerade Linie zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. l 20 30 und L 20,30 sind Beispiele für gültige line-Befehle.
Syntax |
---|
L endPoint - oder - l endPoint |
Begriff |
Beschreibung |
---|---|
endPoint |
Der Endpunkt der Linie. |
Befehl für horizontale Linie
Erstellt eine horizontale Linie zwischen dem aktuellen Punkt und der angegebenen x-Koordinate. H 90 ist ein Beispiel für einen gültigen Befehl für eine horizontale Linie,
Syntax |
---|
H x - oder - h x |
Begriff |
Beschreibung |
---|---|
x |
Die x-Koordinate des Endpunkts der Linie. |
Befehl für vertikale Linie
Erstellt eine vertikale Linie zwischen dem aktuellen Punkt und der angegebenen y-Koordinate. v 90 ist ein Beispiel für einen gültigen Befehl für eine vertikale Linie.
Syntax |
---|
V y - oder - v y |
Begriff |
Beschreibung |
---|---|
y |
Die y-Koordinate des Endpunkts der Linie. |
Befehl für kubische Bézierkurve
Erstellt mithilfe von zwei angegebenen Kontrollpunkten (controlPoint1 und controlPoint2) eine kubische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. C 100,200 200,400 300,200 ist ein Beispiel für einen gültigen Befehl für eine kubische Bézierkurve.
Syntax |
---|
C controlPoint1 controlPoint2 endPoint - oder - c controlPoint1 controlPoint2 endPoint |
Begriff |
Beschreibung |
---|---|
controlPoint1 |
Der erste Kontrollpunkt der Kurve, der die Starttangente der Kurve bestimmt. |
controlPoint2 |
Der zweite Kontrollpunkt der Kurve, der die Endtangente der Kurve bestimmt. |
endPoint |
Der Punkt, zu dem die Kurve gezeichnet wird. |
Befehl für quadratische Bézierkurve
Erstellt mithilfe des angegebenen Kontrollpunkts (controlPoint) eine quadratische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. q 100,200 300,200 ist ein Beispiel für einen gültigen Befehl für eine quadratische Bézierkurve.
Syntax |
---|
Q controlPoint endPoint - oder - q controlPoint endPoint |
Begriff |
Beschreibung |
---|---|
controlPoint |
Der Kontrollpunkt der Kurve, der die Start- und die Endtangente der Kurve bestimmt. |
endPoint |
Der Punkt, zu dem die Kurve gezeichnet wird. |
Befehl für glatte kubische Bézierkurve
Erstellt eine kubische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. Es wird davon ausgegangen, dass der erste Kontrollpunkt die Reflektion des zweiten Kontrollpunkts des vorherigen Befehls ist, der relativ zum aktuellen Punkt ist. Wenn es keinen vorherigen Befehl gibt, oder es sich bei dem vorherigen Befehl nicht um einen Befehl für eine kubische Bézierkurve oder eine glatte kubische Bézierkurve handelt, ist davon auszugehen, dass der erste Kontrollpunkt mit dem aktuellen Punkt übereinstimmt. Der zweite Kontrollpunkt, der Kontrollpunkt für das Ende der Kurve, wird durch controlPoint2 angegeben. S 100,200 200,300 ist ein Beispiel für einen gültigen Befehl für eine glatte kubische Bézierkurve.
Syntax |
---|
S controlPoint2 endPoint - oder - s controlPoint2 endPoint |
Begriff |
Beschreibung |
---|---|
controlPoint2 |
Der Kontrollpunkt der Kurve, der die Endtangente der Kurve bestimmt. |
endPoint |
Der Punkt, zu dem die Kurve gezeichnet wird. |
Befehl für glatte quadratische Bézierkurve
Erstellt eine quadratische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. Es wird davon ausgegangen, dass der Kontrollpunkt die Reflektion des Kontrollpunkts des vorherigen Befehls ist, der relativ zum aktuellen Punkt ist. Wenn es keinen vorherigen Befehl gibt, oder es sich bei dem vorherigen Befehl nicht um einen Befehl für eine quadratische Bézierkurve oder eine glatte quadratische Bézierkurve handelt, ist davon auszugehen, dass der Kontrollpunkt mit dem aktuellen Punkt übereinstimmt.
Syntax |
---|
T controlPoint endPoint - oder - t controlPoint endPoint |
Begriff |
Beschreibung |
---|---|
controlPoint |
Der Kontrollpunkt der Kurve, der Start- und Endtangente der Kurve bestimmt. |
endPoint |
Der Punkt, zu dem die Kurve gezeichnet wird. |
Befehl für elliptischen Bogen
Erstellt einen elliptischen Bogen zwischen dem aktuellen Punkt und dem angegebenen Endpunkt.
Syntax |
---|
A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint - oder - a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint |
Begriff |
Beschreibung |
---|---|
size |
Der x- und y-Radius des Bogens. |
rotationAngle |
Die Drehung der Ellipse in Grad. |
isLargeArcFlag |
Wird auf 1 festgelegt, wenn der Winkel des Bogens 180 Grad oder mehr betragen soll. Wird andernfalls auf 0 festgelegt. |
sweepDirectionFlag |
Wird auf 1 festgelegt, wenn der Bogen in einer positiven Winkelrichtung gezeichnet wird. Wird andernfalls auf 0 festgelegt. |
endPoint |
Der Punkt, zu dem der Bogen gezeichnet wird. |
close-Befehl
Schließt die aktuelle Abbildung und erstellt eine Linie, die den aktuellen Punkt mit dem Startpunkt der Abbildung verbindet. Dieser Befehl erstellt eine Linienverbindung (Ecke) zwischen dem letzten Segment und dem ersten Segment der Abbildung.
Syntax |
---|
Z - oder - z |
Punktsyntax
Beschreibt die x - und y-Koordinaten eines Punkts.
Syntax |
---|
x,y - oder - x y |
Begriff |
Beschreibung |
---|---|
x |
Die x-Koordinate des Punkts. |
y |
Die y-Koordinate des Punkts. |
Spezielle Werte
Anstelle eines numerischen Standardwerts können Sie auch die folgenden speziellen Werte verwenden. Bei diesen Werten muss die Groß-/Kleinschreibung beachtet werden.
Unendlich
Stellt Double.PositiveInfinity dar.-Infinity
Stellt Double.NegativeInfinity dar.NaN
Stellt Double.NaN dar.
Sie können auch die wissenschaftliche Notation verwenden. +1.e17 ist ein Beispiel für einen gültigen Wert.
Siehe auch
Referenz
Konzepte
Übersicht über Formen und die grundlegenden Funktionen zum Zeichnen in WPF