Pfadmarkupsyntax
Informationen über Pfade finden Sie unter Übersicht über Formen und die grundlegenden Funktionen zum Zeichnen in WPF und der Übersicht über die Geometrie, während in diesem Thema dagegen die leistungsstarke und komplexe Minisprache ausführlich beschrieben wird, mit der Sie Pfadgeometrien kompakter unter Verwendung von Extensible Application Markup Language (XAML) angeben können.
Voraussetzungen
Als Voraussetzung für dieses Thema sollten Sie mit grundlegenden Funktionen von Geometry-Objekten vertraut sein. Weitere Informationen finden Sie unter der Übersicht über die Geometrie.
StreamGeometry- und PathFigureCollection-Minisprachen
WPF bietet zwei Klassen, die Minisprachen zur Beschreibung geometrischer Pfade bereitstellen: StreamGeometry und PathFigureCollection.
Sie verwenden die StreamGeometry-Minisprache beim Festlegen einer Eigenschaft vom Typ Geometry, so wie die Clip-Eigenschaft eines UIElement oder die Data-Eigenschaft eines Path-Elements. Im folgenden Beispiel wird mithilfe der Attributsyntax eine StreamGeometry erstellt.
<Path Stroke="Black" Fill="Gray" Data="M 10,100 C 10,300 300,-200 300,100" />
Sie verwenden die PathFigureCollection-Minisprache beim Festlegen der Figures-Eigenschaft einer PathGeometry. Im folgenden Beispiel wird mithilfe der Attributsyntax eine PathFigureCollection für eine PathGeometry erstellt.
<Path Stroke="Black" Fill="Gray"> <Path.Data> <PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" /> </Path.Data> </Path>
Wie Sie aus den vorangehenden Beispielen sehen können, sind die beiden Minisprachen sehr ähnlich. Es ist immer möglich, in jeder Situation eine PathGeometry zu verwenden, in der sie eine StreamGeometry verwenden können; also welche sollten Sie verwenden? Verwenden Sie eine StreamGeometry, wenn Sie nicht den Pfad anpassen müssen, nachdem Sie sie erstellt haben; verwenden Sie eine PathGeometry, wenn sie einen Pfad anpassen müssen.
Weitere Informationen zu den Unterschieden zwischen PathGeometry- und StreamGeometry-Objekten im Allgemeinen finden Sie in der Übersicht der Geometrien.
Anmerkung zu Leerzeichen
Aus Platzgründen wird ein einzelnes Leerzeichen in den folgenden Syntaxabschnitten dargestellt, aber mehrere Leerzeichen sind überall dort zulässig, wo ein einzelnes Leerzeichen angezeigt wird.
Zwei Zahlen müssen nicht unbedingt durch ein Komma oder Leerzeichen getrennt werden, aber dies ist nur möglich, wenn die resultierende Zeichenfolge eindeutig ist. Zum Beispiel besteht 2..3
aus zwei Zahlen: „2.“ und „.3“. Gleiches gilt für: 2-3
ist „2“ und „-3“. Auch vor oder nach Befehlen sind keine Leerzeichen erforderlich.
Syntax
Die Verwendung von Attributen der Extensible Application Markup Language (XAML)-Syntax für eine StreamGeometry wird mit einem optionalen FillRule-Wert und ein- oder mehrstelligen Beschreibungen zusammengestellt.
StreamGeometry XAML-Attributverwendung |
---|
< Objekt Eigenschaft =" [ fillRule ] figureDescription [ figureDescription ]* " ... /> |
Die Verwendung von Attributen der Extensible Application Markup Language (XAML)-Syntax für eine PathFigureCollection wird mit ein- oder mehrstelligen Beschreibungen zusammengestellt.
PathFigureCollection XAML-Attributverwendung |
---|
< Objekt Eigenschaft =" figureDescription [ figureDescription ]* " ... /> |
Begriff | Beschreibung |
---|---|
fillRule | System.Windows.Media.FillRule Gibt an, ob die StreamGeometry den EvenOdd oder NonzeroFillRule verwendet. - F0 gibt den EvenOdd Füllfilter an.- F1 gibt den Nonzero Füllfilter an.Wenn Sie diesen Befehl auslassen, verwendet der untergeordnete Pfad das Standardverhalten, also EvenOdd. Wenn Sie diesen Befehl angeben, müssen Sie ihn zunächst platzieren. |
figureDescription | Eine aus einem Move-Befehl, Draw-Befehl und einem optionalen Close-Befehl bestehende Figur.moveCommand drawCommands [ closeCommand ] |
moveCommand | Ein Move-Befehl, der den Startpunkt der Figur angibt. Weitere Informationen finden Sie im Abschnitt Verschiebungsbefehl. |
drawCommands | Mindestens ein Draw-Befehl, der den Inhalt der Figur beschreibt. Weitere Informationen finden Sie im Abschnitt Zeichenbefehle. |
closeCommand | Ein optionaler Close-Befehl, der die Figur schließt. Weitere Informationen finden Sie im Abschnitt Schließbefehl. |
Move-Befehl
Gibt den Ausgangspunkt einer neuen Figur an.
Syntax |
---|
M startPoint- oder - m startPoint |
Begriff | Beschreibung |
---|---|
startPoint | System.Windows.Point Der Ausgangspunkt einer neuen Figur. |
Der Großbuchstabe M
gibt an, dass startPoint
ein absoluter Wert ist, der Kleinbuchstabe m
gibt an, dass es sich bei startPoint
um einen Offset zum vorherigen Punkt handelt oder um (0,0), falls keiner vorhanden ist. Wenn Sie nach dem Move-Befehl mehrere Punkte auflisten, wird eine Linie zu diesen Punkten gezeichnet, obwohl Sie den Line-Befehl angegeben haben.
Draw-Befehle
Ein Draw-Befehl kann aus mehreren Shape-Befehlen bestehen. Die folgenden Shape-Befehle 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 unter Verwendung eines Großbuchstabens oder eines Kleinbuchstabens ein: Großbuchstaben geben absolute Werte an, und Kleinbuchstaben geben relative Werte an: Die Kontrollpunkte für dieses Segment sind abhängig vom Endpunkt des vorherigen Beispiels.
Tipp
Wenn Sie nacheinander mehrere Befehle desselben Typs eingeben, müssen Sie den Befehl nicht doppelt eingeben, zum Beispiel entspricht L 100,200 300,400
L 100,200 L 300,400
.
Line-Befehl
Erstellt eine gerade Linie zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. l 20 30
und L 20,30
sind Beispiele von gültigen Linie-Befehlen.
Syntax |
---|
L endPoint- oder - l endPoint |
Begriff | Beschreibung |
---|---|
endPoint | System.Windows.Point Der Endpunkt der Linie. |
Der Großbuchstabe L
gibt an, dass endPoint
ein absoluter Wert ist, der Kleinbuchstabe l
gibt an, dass es sich bei endPoint
um einen Offset zum vorherigen Punkt handelt oder um (0,0), falls keiner vorhanden ist.
Befehl für eine 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 | System.Double Die x-Koordinate des Endpunkts der Linie. |
Der Großbuchstabe H
gibt an, dass x
ein absoluter Wert ist, der Kleinbuchstabe h
gibt an, dass es sich bei x
um einen Offset zum vorherigen Punkt handelt oder um (0,0), falls keiner vorhanden ist.
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 | System.Double Die y-Koordinate des Endpunkts der Linie. |
Der Großbuchstabe V
gibt an, dass y
ein absoluter Wert ist, der Kleinbuchstabe v
gibt an, dass es sich bei y
um einen Offset zum vorherigen Punkt handelt oder um (0,0), falls keiner vorhanden ist.
Befehl Kubische Bézierkurve
Erstellt eine quadratische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt mithilfe des angegebenen Kontrollpunkts (controlPoint
1 und controlPoint
2). C 100,200 200,400 300,200
ist ein Beispiel für einen gültigen Kurvenbefehl.
Syntax |
---|
C controlPoint 1controlPoint 2endPoint - oder - c controlPoint 1controlPoint 2endPoint |
Begriff | Beschreibung |
---|---|
controlPoint 1 |
System.Windows.Point Der erste Kontrollpunkt der Kurve, der die beginnende Tangente der Kurve bestimmt. |
controlPoint 2 |
System.Windows.Point Der zweite Kontrollpunkt der Kurve, der die endende Tangente der Kurve bestimmt. |
endPoint |
System.Windows.Point Der Punkt, bis zu dem die Kurve gezeichnet wird. |
Befehl Quadratische Bézierkurve
Erstellt eine quadratische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt mithilfe des angegebenen Kontrollpunkts (controlPoint
). q 100,200 300,200
ist ein Beispiel für einen gültigen quadratischen Bézierkurvenbefehl.
Syntax |
---|
Q controlPoint endPoint - oder - q controlPoint endPoint |
Begriff | Beschreibung |
---|---|
controlPoint |
System.Windows.Point Der Kontrollpunkt der Kurve, der die beginnende und endende Tangente der Kurve bestimmt. |
endPoint |
System.Windows.Point Der Punkt, bis zu dem die Kurve gezeichnet wird. |
Befehl Glatte Kubische Bézierkurve
Erstellt eine kubische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. Der erste Kontrollpunkt soll die Reflektion des zweiten Kontrollpunkts des vorherigen Befehls relativ zum aktuellen Punkt sein. Wenn kein vorheriger Befehl vorhanden ist oder der vorherige Befehl kein Befehl für eine kubische Bézierkurve oder eine glatte kubische Bézierkurve war, können Sie annehmen, dass der erste Kontrollpunkt mit dem aktuellen Punkt deckungsgleich ist. Der zweite Kontrollpunkt, der Kontrollpunkt für das Ende der Kurve, wird durch controlPoint
2 angegeben. Zum Beispiel ist S 100,200 200,300
ein gültiger Befehl für eine glatte kubische Bézierkurve.
Syntax |
---|
S controlPoint 2endPoint - oder - s controlPoint 2endPoint |
Begriff | Beschreibung |
---|---|
controlPoint 2 |
System.Windows.Point Der Kontrollpunkt der Kurve, der die endende Tangente der Kurve bestimmt. |
endPoint |
System.Windows.Point Der Punkt, bis zu dem die Kurve gezeichnet wird. |
Befehl Glatte Quadratische Bézierkurve
Erstellt eine kubische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. Der Kontrollpunkt soll die Reflektion des Kontrollpunkts des vorherigen Befehls relativ zum aktuellen Punkt sein. Wenn kein vorheriger Befehl vorhanden ist oder der vorherige Befehl kein Befehl für eine quadratische Bézierkurve und kein Befehl für eine glatte quadratische Bézierkurve war, fällt der Kontrollpunkt mit dem aktuellen Punkt zusammen.
Syntax |
---|
T endPoint - oder - t endPoint |
Begriff | Beschreibung |
---|---|
endPoint |
System.Windows.Point Der Punkt, bis 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 |
System.Windows.Size Der X- und Y-Radius des Bogens. |
rotationAngle |
System.Double Die Drehung der Ellipse in Grad. |
isLargeArcFlag |
Ist auf 1 festgelegt, wenn der Winkel des Bogens 180 Grad oder größer sein soll; andernfalls auf 0 festgelegt. |
sweepDirectionFlag |
Ist auf 1 festgelegt, wenn der Bogen in einer Richtung mit positivem Winkel gezeichnet wird; andernfalls auf 0 festgelegt. |
endPoint |
System.Windows.Point Der Punkt, bis zu dem der Bogen gezeichnet wird. |
Close-Befehl
Beendet die aktuelle Figur und erstellt eine Linie, die den aktuellen Punkt mit dem Startpunkt der Figur verbindet. Dieser Befehl erstellt einen LineJoin (Ecke) zwischen dem letzten Segment und dem ersten Segment der Figur.
Syntax |
---|
Z - oder - z |
Punkt-Syntax
Beschreibt die x- und y-Koordinaten eines Punkts, an dem (0,0) die obere linke Ecke ist.
Syntax |
---|
x , y - oder - x y |
Begriff | Beschreibung |
---|---|
x |
System.Double Die x-Koordinate des Punkts. |
y |
System.Double Die y-Koordinate des Punkts. |
Spezielle Werte
Anstelle eines numerischen Standardwerts können Sie auch die folgenden speziellen Werte verwenden. Die Werte werden nach Groß-/Kleinschreibung unterschieden.
Unendlich
Repräsentiert Double.PositiveInfinity.
-Infinity
Repräsentiert Double.NegativeInfinity.
NaN
Repräsentiert Double.NaN.
Sie können auch die wissenschaftliche Schreibweise verwenden. +1.e17
ist zum Beispiel ein gültiger Wert.
Weitere Informationen
.NET Desktop feedback