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 oderNonzero
FillRule
dieEvenOdd
.F0
wird verwendet, um die FüllregelEvenOdd
anzugeben, währendF1
verwendet wird, um die FüllregelNonzero
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
oderl
). - Horizontale Linie (
H
oderh
). - Vertikale Linie (
V
oderv
). - Elliptischer Bogen (
A
odera
). - Kubische Bézierkurve (
C
oderc
). - Quadratische Bézierkurve (
Q
oderq
). - Glatte kubische Bézierkurve (
S
oders
). - Glatte quadratische Bezier-Kurve
T
odert
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
einSize
-Wert, der den X- und Y-Radius des Bogens darstellt - ist
rotationAngle
eindouble
-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
einPoint
, 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ürdouble.PositiveInfinity
.-Infinity
steht fürdouble.NegativeInfinity
.NaN
steht fürdouble.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.