Pfadmarkupsyntax

Aktualisiert: November 2007

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.

Vorbereitungsmaßnahmen

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. Zum Beispiel besteht 2..3 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

<objectproperty="[fillRule] figureDescription[figureDescription]*" ... />

Die Extensible Application Markup Language (XAML)-Attributverwendungssyntax für PathFigureCollection besteht aus einer oder mehreren Abbildungsbeschreibungen.

Verwendung des XAML-Attributs PathFigureCollection

<objectproperty="figureDescription[figureDescription]*" ... />

Begriff

Beschreibung

fillRule

System.Windows.Media.FillRule

Gibt an, ob StreamGeometry die FillRuleEvenOdd oder Nonzero verwendet.

  • F0 gibt die Füllregel EvenOdd an.

  • F1 gibt die Füllregel Nonzero an.

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

MMstartPoint

- oder -

mmstartPoint

Begriff

Beschreibung

startPoint

System.Windows.Point

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

LLendPoint

- oder -

llendPoint

Begriff

Beschreibung

endPoint

System.Windows.Point

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

System.Double

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

System.Double

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

System.Windows.Point

Der erste Kontrollpunkt der Kurve, der die Starttangente der Kurve bestimmt.

controlPoint2

System.Windows.Point

Der zweite Kontrollpunkt der Kurve, der die Endtangente der Kurve bestimmt.

endPoint

System.Windows.Point

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

System.Windows.Point

Der Kontrollpunkt der Kurve, der die Start- und die Endtangente der Kurve bestimmt.

endPoint

System.Windows.Point

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

System.Windows.Point

Der Kontrollpunkt der Kurve, der die Endtangente der Kurve bestimmt.

endPoint

System.Windows.Point

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

System.Windows.Point

Der Kontrollpunkt der Kurve, der Start- und Endtangente der Kurve bestimmt.

endPoint

System.Windows.Point

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

System.Windows.Size

Der x- und y-Radius des Bogens.

rotationAngle

System.Double

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

System.Windows.Point

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

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. Bei diesen Werten muss die Groß-/Kleinschreibung beachtet werden.

Sie können auch die wissenschaftliche Notation verwenden. +1.e17 ist ein Beispiel für einen gültigen Wert.

Siehe auch

Konzepte

Übersicht über Formen und die grundlegenden Funktionen zum Zeichnen in WPF

Übersicht über die Geometrie

Referenz

Path

StreamGeometry

PathGeometry

PathFigureCollection

Weitere Ressourcen

Gewusst-wie-Themen zu Geometrien

Beispiele für Geometrien

Beispiele zu Formen