Pfadmarkierungssyntax
Informationen über Pfade finden Sie unter Übersicht über Formen und die grundlegenden Funktionen zum Zeichnen in WPF und in der Übersicht über die Geometrie, während in diesem Artikel die leistungsstarke und komplexe Minisprache ausführlich beschrieben wird, mit der Sie unter Verwendung von Extensible Application Markup Language (XAML) Pfadgeometrien kompakter angeben können.
Voraussetzungen
Um dieses Thema zu verstehen, sollten Sie mit den grundlegenden Features von Geometry Objekten vertraut sein. Weitere Informationen finden Sie unter Übersicht über die Geometrie.
StreamGeometry- und PathFigureCollection-Minisprachen
WPF stellt zwei Klassen bereit, die Minisprachen zum Beschreiben geometrischer Pfade bereitstellen: StreamGeometry und PathFigureCollection.
Sie verwenden die StreamGeometry Minisprache, wenn Sie eine Eigenschaft vom Typ Geometryfestlegen, z. B. die Clip-Eigenschaft eines UIElement oder die Data-Eigenschaft eines Path Elements. Im folgenden Beispiel wird mithilfe der Attributsyntax eine StreamGeometry-Klasse 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-Klasse für eine PathGeometry-Klasse 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 obigen Beispielen sehen können, sind die beiden Minisprachen sehr ähnlich. Es ist in jeder Situation möglich, eine PathGeometry-Klasse zu verwenden, in der Sie auch eine StreamGeometry-Klasse verwenden könnten. Welche Klasse sollten Sie verwenden? Verwenden Sie eine StreamGeometry, wenn Sie den Pfad nach dem Erstellen nicht ändern müssen; verwenden Sie eine PathGeometry, wenn Sie den Pfad ändern müssen.
Weitere Informationen zu den Unterschieden zwischen PathGeometry und StreamGeometry Objekten finden Sie in der Geometry Overview.
Anmerkung zu Leerzeichen
Zur Vereinfachung wird ein einzelnes Leerzeichen in den folgenden Syntaxabschnitten gezeigt, aber mehrere Leerzeichen sind ebenfalls akzeptabel, wenn ein einzelnes Leerzeichen gezeigt wird.
Zwei Zahlen müssen nicht tatsächlich durch ein Komma oder Leerzeichen getrennt werden, dies kann jedoch nur erfolgen, wenn die resultierende Zeichenfolge eindeutig ist. Beispielsweise sind 2..3
tatsächlich zwei Zahlen: "2" und ".3". Gleiches gilt für: 2-3
ist „2“ und „-3“. Leerzeichen sind vor oder nach Befehlen auch nicht 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.
XAML-Attributverwendung bei „StreamGeometry“ |
---|
< Objekteigenschaft=" [ 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.
XAML-Attributverwendung bei „PathFigureCollection“ |
---|
< Objekteigenschaft=" figureDescription [ figureDescription ]* " ... /> |
Begriff | Beschreibung |
---|---|
fillRule | System.Windows.Media.FillRule Gibt an, ob die StreamGeometry-Klasse die FillRule-Eigenschaft EvenOdd oder Nonzero verwendet - F0 gibt den EvenOdd Füllfilter an.- F1 gibt die Nonzero-Füllungsregel an.Wenn Sie diesen Befehl weglassen, verwendet der Unterpfad das Standardverhalten, das EvenOddist. 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 FigurmoveCommand drawCommands [ closeCommand ] |
moveCommand | Ein Bewegungsbefehl, der den Startpunkt der Abbildung angibt. Weitere Informationen finden Sie im Abschnitt move-Befehl. |
drawCommands | Mindestens ein draw-Befehl, der den Inhalt der Figur beschreibt. Weitere Informationen finden Sie im Abschnitt draw-Befehle. |
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 startPointoder m startPoint |
Begriff | Beschreibung |
---|---|
startPoint | System.Windows.Point Ausgangspunkt einer neuen Figur |
Ein großes M
gibt an, dass startPoint
ein absoluter Wert ist; ein kleines m
gibt an, dass startPoint
ein Offset zum vorherigen Punkt beziehungsweise (0,0) ist, wenn keiner vorhanden ist. Wenn Sie mehrere Punkte nach dem Verschieben-Befehl auflisten, wird eine Linie zu diesen Punkten gezogen, obwohl Sie den Linienbefehl 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 ein, indem Sie entweder einen Groß- oder Kleinbuchstaben verwenden: Großbuchstaben geben absolute Werte und Kleinbuchstaben an, die relative Werte angeben: Die Kontrollpunkte für dieses Segment sind relativ zum Endpunkt des vorherigen Beispiels.
Tipp
Wenn Sie mehrere Befehle desselben Typs sequenziell eingeben, können Sie den doppelten Befehlseintrag weglassen. beispielsweise 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 line-Befehlen.
Syntax |
---|
L endPointoder l endPoint |
Begriff | Beschreibung |
---|---|
endPoint | System.Windows.Point Endpunkt der Linie |
Eine großgeschriebene L
gibt an, dass endPoint
ein absoluter Wert ist; ein kleingeschriebener l
gibt an, dass endPoint
ein Offset zum vorherigen Punkt oder (0,0) ist, wenn 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 horizontale Linien.
Syntax |
---|
H xoder h x |
Begriff | Beschreibung |
---|---|
x | System.Double Die x-Koordinate des Endpunkts der Linie |
Eine großgeschriebene H
gibt an, dass x
ein absoluter Wert ist; ein kleingeschriebener h
weist darauf hin, dass x
ein Offset zum vorherigen Punkt oder (0,0) ist, wenn 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 vertikale Linien.
Syntax |
---|
V yoder v y |
Begriff | Beschreibung |
---|---|
und | System.Double Die y-Koordinate des Endpunkts der Linie. |
Eine großgeschriebene V
gibt an, dass y
ein absoluter Wert ist; ein kleingeschriebener v
gibt an, dass y
ein Offset zum vorherigen Punkt oder (0,0) ist, falls keiner vorhanden ist.
Befehl für kubische Bézierkurve
Erstellt eine kubische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt mithilfe der beiden angegebenen Kontrollpunkte (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 Anfangstangente der Kurve bestimmt. |
controlPoint 2 |
System.Windows.Point Der zweite Kontrollpunkt der Kurve, der die Endtangente der Kurve bestimmt. |
endPoint |
System.Windows.Point Der Punkt, an dem die Kurve gezeichnet wird. |
Befehl für 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 Anfangs- und Endtangente der Kurve bestimmt. |
endPoint |
System.Windows.Point Der Punkt, an 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. 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 kubischer Bézierkurvenbefehl oder ein glatter kubischer Bézierkurvenbefehl war, gehen Sie davon aus, dass der erste Kontrollpunkt mit dem aktuellen Punkt übereinstimmt. Der zweite Kontrollpunkt, der Kontrollpunkt für das Ende der Kurve, wird durch controlPoint
2 angegeben. Beispielsweise 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 Kontrollpunkt der Kurve, der die endende Tangente der Kurve bestimmt |
endPoint |
System.Windows.Point Der Punkt, an 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. 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 quadratischer Bézierkurvenbefehl oder ein glatter quadratischer Bézierkurvenbefehl war, ist der Kontrollpunkt mit dem aktuellen Punkt übereinstimmend.
Syntax |
---|
T endPoint oder t endPoint |
Begriff | Beschreibung |
---|---|
endPoint |
System.Windows.Point Der Punkt, an 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 X- und Y-Radius des Bogens |
rotationAngle |
System.Double Drehung der Ellipse in Grad |
isLargeArcFlag |
Auf 1 festgelegt, wenn der Winkel des Bogens 180 Grad oder höher sein soll; andernfalls auf 0 festgelegt. |
sweepDirectionFlag |
Legen Sie den Wert auf 1 fest, wenn der Bogen in positiver Winkelrichtung gezeichnet wird, andernfalls legen Sie ihn auf 0 fest. |
endPoint |
System.Windows.Point Punkt, bis zu dem der Bogen gezeichnet wird |
close-Befehl
Beendet die aktuelle Abbildung und erstellt eine Linie, die den aktuellen Punkt mit dem Ausgangspunkt der Abbildung verbindet. Dieser Befehl erstellt einen LineJoin (Ecke) zwischen dem letzten Segment und dem ersten Segment der Figur.
Syntax |
---|
Z oder z |
Punktsyntax
Beschreibt die x- und y-Koordinaten eines Punkts, wobei (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 standardmäßigen numerischen Werts können Sie auch die folgenden speziellen Werte verwenden. Die Groß-/Kleinschreibung muss bei diesen Werten berücksichtigt werden.
Unendlichkeit
Repräsentiert Double.PositiveInfinity
-Unendlichkeit
Repräsentiert Double.NegativeInfinity
NaN
Repräsentiert Double.NaN
Sie können auch wissenschaftliche Schreibweise verwenden. Beispielsweise ist +1.e17
ein gültiger Wert.
Siehe auch
.NET Desktop feedback