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
<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.

PathFigureCollection XAML-Attributverwendung
<Objekteigenschaft="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
MstartPoint

- oder -

mstartPoint
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. Wenn Sie nacheinander mehrere Befehle desselben Typs eingeben, müssen Sie den Befehl nicht doppelt eingeben, zum Beispiel entspricht L 100,200 300,400L 100,200 L 300,400. In der folgenden Tabelle werden die Befehle Verschieben und Zeichnen beschrieben.

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
LendPoint

- oder -

lendPoint
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
Hx

- oder -

hx
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
Vy

- oder -

vy
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 (controlPoint1 und controlPoint2). C 100,200 200,400 300,200 ist ein Beispiel für einen gültigen Kurvenbefehl.

Syntax
CcontrolPoint1controlPoint2endPoint

- oder -

ccontrolPoint1controlPoint2endPoint
Begriff Beschreibung
controlPoint1 System.Windows.Point

Der erste Kontrollpunkt der Kurve, der die beginnende Tangente der Kurve bestimmt.
controlPoint2 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 controlPoint2 angegeben. Zum Beispiel ist S 100,200 200,300 ein gültiger Befehl für eine glatte kubische Bézierkurve.

Syntax
ScontrolPoint2endPoint

- oder -

scontrolPoint2endPoint
Begriff Beschreibung
controlPoint2 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