Freigeben über


Xamarin.Forms Shapes: Pfadmarkierungssyntax

Xamarin.Forms Mit der Pfadmarkierungssyntax können Sie Pfadgeometrien in XAML komprimieren. Die Syntax wird als Zeichenfolgenwert für die Path.Data Eigenschaft angegeben:

<Path Stroke="Black"
      Data="M13.908992,16.207977 L32.000049,16.207977 32.000049,31.999985 13.908992,30.109983Z" />

Die Pfadmarkupsyntax besteht aus einem optionalen FillRule-Wert und einer oder mehreren Abbildungsbeschreibungen. Diese Syntax kann ausgedrückt werden als: <Path Data="[fillRule] figureDescription [figureDescription] * " ... />

In dieser Syntax:

  • fillRule ist ein optionaler Xamarin.Forms.Shapes.FillRule Wert, der angibt, ob die Geometrie die oder Nonzero FillRuledie EvenOdd . F0 wird verwendet, um die Füllregel EvenOdd anzugeben, während F1 verwendet wird, um die Füllregel Nonzero anzugeben. Weitere Informationen zu Füllregeln finden Sie unter Xamarin.Forms Shapes: Füllregeln.
  • figureDescription stellt eine Figur dar, die aus einem Bewegungsbefehl, Zeichenbefehlen und einem optionalen Schließbefehl besteht. Ein Bewegungsbefehl, der den Startpunkt der Figur angibt. Zeichenbefehle beschreiben den Inhalt der Abbildung und der optionale Schließbefehl schließt die Abbildung.

Im obigen Beispiel gibt die Pfadmarkupsyntax einen Startpunkt mithilfe des Bewegungsbefehls (M) und eine Reihe von geraden Linien mithilfe des Linienbefehls (L) an und schließt den Pfad mit dem Befehl „Schließen“ (Z).

In der Pfadmarkupsyntax werden vor oder nach Befehlen keine Leerzeichen benötigt. Zwei Zahlen müssen nicht unbedingt durch ein Trennzeichen oder Leerzeichen getrennt werden. Dies ist jedoch nur möglich, wenn die resultierende Zeichenfolge eindeutig ist.

Tipp

Die Pfadmarkupsyntax ist mit SVG-Bildpfaddefinitionen (Scalable Vector Graphics) kompatibel und kann daher für das Portieren von Grafiken aus dem SVG-Format nützlich sein.

Die Pfadmarkupsyntax ist zwar für die Verwendung in XAML vorgesehen, kann jedoch in ein Geometry-Objekt im Code konvertiert werden, indem die ConvertFromInvariantString-Methode in der PathGeometryConverter-Klasse aufgerufen wird:

Geometry pathData = (Geometry)new PathGeometryConverter().ConvertFromInvariantString("M13.908992,16.207977 L32.000049,16.207977 32.000049,31.999985 13.908992,30.109983Z");

Bewegungsbefehl

Ein Bewegungsbefehl, der den Startpunkt der Figur angibt. Die Syntax für diesen Befehl lautet: M startPoint oder m startPoint.

In dieser Syntax ist , startPoint eine Point-Struktur, die den Anfangspunkt einer neuen Abbildung angibt. Wenn Sie nach dem Bewegungsbefehl mehrere Punkte auflisten, wird eine Linie zu diesen Punkten gezeichnet.

M 10,10 ist ein Beispiel für einen gültigen Bewegungsbefehl.

Zeichenbefehle

Ein Draw-Befehl kann aus mehreren Shape-Befehlen bestehen. Die folgenden Zeichenbefehle sind verfügbar:

  • Linie (L oder l).
  • Horizontale Linie (H oder h).
  • Vertikale Linie (V oder v).
  • Elliptischer Bogen (A oder a).
  • Kubische Bézierkurve (C oder c).
  • Quadratische Bézierkurve (Q oder q).
  • Glatte kubische Bézierkurve (S oder s).
  • Glatte quadratische Bezier-Kurve Todert

Jeder Zeichenbefehl wird mit einem Buchstaben ohne Berücksichtigung der Groß-/Kleinschreibung angegeben. Wenn Sie nacheinander mehrere Befehle des gleichen Typs eingeben, müssen Sie den Befehl nicht doppelt eingeben. L 100,200 300,400 entspricht beispielsweise L 100,200 L 300,400.

Linienbefehl

Der Befehl erstellt eine gerade Linie zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. Die Syntax für diesen Befehl lautet: L endPoint oder l endPoint.

In dieser Syntax ist endPoint ein Point, der den Endpunkt der Linie darstellt.

L 20,30 und L 20 30 sind Beispiele von gültigen Linienbefehlen.

Informationen zum Erstellen einer geraden Linie als PathGeometry-Objekt finden Sie unter Erstellen eines LineSegment.

Befehl für eine horizontale Linie

Erstellt eine horizontale Linie zwischen dem aktuellen Punkt und der angegebenen X-Koordinate. Die Syntax für diesen Befehl lautet: H x oder h x.

In dieser Syntax steht x für einen double-Wert, der die X-Koordinate des Endpunkts der Linie darstellt.

H 90 ist ein Beispiel für einen gültigen Befehl für eine horizontale Linie.

Befehl für eine vertikale Linie

Dieser Befehl erstellt eine vertikale Linie zwischen dem aktuellen Punkt und der angegebenen Y-Koordinate. Die Syntax für diesen Befehl lautet: V y oder v y.

In dieser Syntax steht y für einen double-Wert, der die Y-Koordinate des Endpunkts der Linie darstellt.

V 90 ist ein Beispiel für einen gültigen Befehl für eine vertikale Linie.

Befehl für einen elliptischen Bogen

Dieser Befehl erstellt einen elliptischen Bogen zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. Die Syntax für diesen Befehl lautet: A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint oder a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint.

In dieser Syntax:

  • ist size ein Size-Wert, der den X- und Y-Radius des Bogens darstellt
  • ist rotationAngle ein double-Wert, der die Drehung der Ellipse in Grad darstellt
  • sollte isLargeArcFlag auf 1 festgelegt werden, wenn der Winkel des Bogens mindestens 180 Grad sein soll (andernfalls auf 0 setzen)
  • sollte sweepDirectionFlag auf 1 festgelegt werden, wenn der Bogen in einer Richtung mit positivem Winkel gezeichnet wird (andernfalls auf 0 setzen)
  • ist endPoint ein Point, an den der Bogen gezeichnet wird

A 150,150 0 1,0 150,-150 ist ein Beispiel für einen gültigen Befehl für einen elliptischen Bogen.

Informationen zum Erstellen eines elliptischen Bogens als PathGeometry-Objekt finden Sie unter Erstellen eines ArcSegment.

Befehl für eine kubische Bézierkurve

Dieser Befehl erstellt mithilfe von zwei angegebenen Kontrollpunkten eine kubische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. Die Syntax für diesen Befehl lautet: C controlPoint1 controlPoint2 endPoint oder c controlPoint1 controlPoint2 endPoint.

In dieser Syntax:

  • ist controlPoint1 ein Point, der den ersten Kontrollpunkt der Kurve darstellt, der die Anfangstangente der Kurve bestimmt
  • ist controlPoint2 ein Point, der den zweiten Kontrollpunkt der Kurve darstellt, der die Endtangente der Kurve bestimmt
  • ist endPoint ein Point, der den Punkt darstellt, an den die Kurve gezeichnet wird

C 100,200 200,400 300,200 ist ein Beispiel für einen gültigen Befehl für eine kubische Bézierkurve.

Informationen zum Erstellen einer kubischen Bézierkurve als PathGeometry-Objekt finden Sie unter Erstellen eines BezierSegment.

Befehl für eine quadratische Bézierkurve

Dieser Befehl erstellt mithilfe des angegebenen Kontrollpunkts eine quadratische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. Die Syntax für diesen Befehl lautet: Q controlPoint endPoint oder q controlPoint endPoint.

In dieser Syntax:

  • ist controlPoint ein Point, der den Kontrollpunkt der Kurve darstellt, der die Anfangs- und Endtangente der Kurve bestimmt
  • ist endPoint ein Point, der den Punkt darstellt, an den die Kurve gezeichnet wird

Q 100,200 300,200 ist ein Beispiel für einen gültigen quadratischen Bézierkurvenbefehl.

Informationen zum Erstellen einer quadratischen Bézierkurve als PathGeometry-Objekt finden Sie unter Erstellen eines QuadraticBezierSegment.

Befehl für eine glatte kubische Bézierkurve

Dieser Befehl erstellt mithilfe des angegebenen Kontrollpunkts eine kubische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. Die Syntax für diesen Befehl lautet: S controlPoint2 endPoint oder s controlPoint2 endPoint.

In dieser Syntax:

  • ist controlPoint2 ein Point, der den zweiten Kontrollpunkt der Kurve darstellt, der die Endtangente der Kurve bestimmt
  • ist endPoint ein Point, der den Punkt darstellt, an den die Kurve gezeichnet wird

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.

S 100,200 200,300 ist ein Beispiel für einen gültigen Befehl für eine glatte kubische Bézierkurve.

Befehl für eine glatte quadratische Bézierkurve

Dieser Befehl erstellt mithilfe eines Kontrollpunkts eine quadratische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. Die Syntax für diesen Befehl lautet: T endPoint oder t endPoint.

In dieser Syntax steht endPoint für einen Point, der den Punkt darstellt, an den die Kurve gezeichnet wird.

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 oder eine glatte quadratische Bézierkurve war, können Sie annehmen, dass der Kontrollpunkt mit dem aktuellen Punkt deckungsgleich ist.

T 100,30 ist ein Beispiel für einen gültigen Befehl für eine glatte quadratische Bézierkurve.

Befehl zum Schließen

Dieser Befehl beendet die aktuelle Figur und erstellt eine Linie, die den aktuellen Punkt mit dem Startpunkt der Figur verbindet. Dieser Befehl erstellt daher eine Linienverbindung zwischen dem letzten Segment und dem ersten Segment der Figur.

Die Syntax für den Schließen-Befehl lautet: Z oder z.

Zusätzliche Werte

Anstelle eines numerischen Standardwerts können Sie auch die folgenden speziellen Werte verwenden, die zwischen Groß- und Kleinschreibung unterscheiden.

  • Infinity steht für double.PositiveInfinity.
  • -Infinity steht für double.NegativeInfinity.
  • NaN steht für double.NaN.

Darüber hinaus können Sie auch eine wissenschaftliche Schreibweise verwenden, die nicht zwischen Groß- und Kleinschreibung unterscheidet. Daher ist +1.e17 ein gültiger Wert.