Syntax für die Verschieben- und Zeichnen-Befehle

Erfahren Sie mehr über die Verschiebungs- und Zeichenbefehle (eine Minisprache), mit denen Sie Pfadgeometrien als XAML-Attributwert angeben können. Bewegungs- und Zeichenbefehle werden von vielen Design- und Grafiktools verwendet, die eine Vektorgrafik oder Form als Serialisierungs- und Austauschformat ausgeben können.

Eigenschaften, die Zeichenfolgen für Verschieben und Zeichnen von Befehlen verwenden

Die Befehlssyntax zum Verschieben und Zeichnen wird von einem internen Typkonverter für XAML unterstützt, der die Befehle analysiert und eine Laufzeitgrafikdarstellung erzeugt. Diese Darstellung ist im Grunde eine fertige Gruppe von Vektoren, die für die Präsentation bereit sind. Die Vektoren selbst schließen die Präsentationsdetails nicht ab; Sie müssen weiterhin andere Werte für die Elemente festlegen. Für ein Path-Objekt benötigen Sie auch Werte für Fill, Stroke und andere Eigenschaften, und dann muss path irgendwie mit der visuellen Struktur verbunden sein. Legen Sie für ein PathIcon-Objekt die Foreground-Eigenschaft fest.

Es gibt zwei Eigenschaften in der Windows-Runtime, die eine Zeichenfolge verwenden können, die Verschieben- und Zeichnen-Befehle darstellt: Path.Data und PathIcon.Data. Wenn Sie eine dieser Eigenschaften durch Angeben von Bewegungs- und Zeichnen-Befehlen festlegen, legen Sie sie in der Regel als XAML-Attributwert zusammen mit anderen erforderlichen Attributen dieses Elements fest. Ohne sich an die Besonderheiten zu gewöhnen, sieht dies wie folgt aus:

<Path x:Name="Arrow" Fill="White" Height="11" Width="9.67"
  Data="M4.12,0 L9.67,5.47 L4.12,10.94 L0,10.88 L5.56,5.47 L0,0.06" />

Verwenden von Verschieben- und Zeichnen-Befehlen im Vergleich zu einer PathGeometry

Für Windows-Runtime XAML erzeugen die Bewegungs- und Zeichenbefehle ein PathGeometry-Objekt mit einem einzelnen PathFigure-Objekt mit einem Figures-Eigenschaftswert. Jeder Draw-Befehl erzeugt eine pathSegment abgeleitete Klasse in der Segmentenauflistung dieser einzelnen PathFigure, der Bewegungsbefehl ändert den StartPoint und das Vorhandensein eines schließenden Befehls legt IsClosed auf "true" fest. Sie können diese Struktur als Objektmodell navigieren, wenn Sie die Datenwerte zur Laufzeit untersuchen.

Die grundlegende Syntax

Die Syntax für Verschieben- und Zeichnen-Befehle kann wie folgt zusammengefasst werden:

  1. Beginnen Sie mit einer optionalen Füllregel. In der Regel geben Sie dies nur an, wenn Sie den Standardwert "EvenOdd " nicht wünschen. (Weitere Informationen EvenOdd später.)
  2. Geben Sie genau einen Verschiebungsbefehl an.
  3. Geben Sie einen oder mehrere Zeichenbefehle an.
  4. Geben Sie einen Schließen-Befehl an. Sie können einen Schließen-Befehl weglassen, aber das würde Ihre Figur offen lassen (das ist ungewöhnlich).

Allgemeine Regeln dieser Syntax sind:

  • Jeder Befehl wird durch genau einen Buchstaben dargestellt.
  • Dieser Buchstabe kann Groß- oder Kleinschreibung sein. Fall ist wichtig, wie wir beschreiben.
  • Jeder Befehl mit Ausnahme des Befehls "Schließen" folgt in der Regel einer oder mehreren Zahlen.
  • Wenn mehr als eine Zahl für einen Befehl vorhanden ist, trennen Sie den Befehl durch Komma oder Leerzeichen.

[fillRule] moveCommand drawCommand [drawCommand*] [closeCommand] [closeCommand]

Viele der Zeichenbefehle verwenden Punkte, in denen Sie einen x,y-Wert angeben. Immer wenn ein *Punktplatzhalter angezeigt wird, können Sie davon ausgehen, dass Sie zwei Dezimalwerte für den x,y-Wert eines Punkts geben.

Leerzeichen können häufig weggelassen werden, wenn das Ergebnis nicht mehrdeutig ist. Sie können tatsächlich alle Leerzeichen weglassen, wenn Sie Kommas als Trennzeichen für alle Zahlensätze (Punkte und Größe) verwenden. Diese Nutzung ist z. B. legal: F1M0,58L2,56L6,60L13,51L15,53L6,64z. Es ist jedoch typischer, Leerraum zwischen Befehlen zur Übersichtlichkeit einzuschließen.

Verwenden Sie keine Kommas als Dezimalkomma für Dezimalzahlen; Die Befehlszeichenfolge wird von XAML interpretiert und berücksichtigt keine kulturspezifischen Konventionen zur Zahlenformatierung, die sich von denen unterscheiden, die im Gebietsschema "en-us " verwendet werden.

Syntaxspezifische Angaben

Füllregel

Es gibt zwei mögliche Werte für die optionale Füllregel: F0 oder F1. (Die F ist immer Großbuchstaben.) F0 ist der Standardwert. Es erzeugt evenOdd-Füllverhalten , sodass Sie es normalerweise nicht angeben. Verwenden Sie F1 , um das Füllverhalten von Nonzero abzurufen. Diese Füllwerte werden an den Werten der FillRule-Aufzählung ausgerichtet.

Befehl 'Verschieben'

Gibt den Ausgangspunkt einer neuen Figur an.

Syntax
M startPoint
- oder -
mstartPoint
Begriff Beschreibung
startPoint Point
Der Ausgangspunkt einer neuen Figur.

Ein Großbuchstaben M gibt an, dass StartPoint eine absolute Koordinate ist. Ein Kleinbuchstaben m gibt an, dass StartPoint ein Offset zum vorherigen Punkt ist, oder (0,0), wenn kein vorheriger Punkt vorhanden ist.

Hinweis: Es ist zulässig, mehrere Punkte nach dem Bewegungsbefehl anzugeben. Eine Linie wird auf diese Punkte gezeichnet, als ob Sie den Zeilenbefehl angegeben haben. Das ist jedoch kein empfohlener Stil; verwenden Sie stattdessen den dedizierten Zeilenbefehl.

Zeichnen von Befehlen

Ein Draw-Befehl kann aus mehreren Formbefehlen bestehen: Linie, horizontale Linie, vertikale Linie, kubische Bézierkurve, quadratische Bézierkurve, glatte kubische Bézierkurve, glatte quadratische Bézierkurve und elliptischer Bogen.

Bei allen Zeichnen-Befehlen ist die Groß-/Kleinschreibung wichtig. Großbuchstaben geben absolute Koordinaten und Kleinbuchstaben relativ zum vorherigen Befehl an.

Die Kontrollpunkte für ein Segment sind relativ zum Endpunkt des vorherigen Abschnitts. 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.

Befehlszeilenbefehl

Erstellt eine gerade Linie zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. l 20 30 und L 20,30 sind Beispiele von gültigen Linienbefehlen. Definiert das Äquivalent eines LineGeometry -Objekts.

Syntax
LEndpunkt
- oder -
lEndpunkt
Begriff Beschreibung
endPoint Point
Der Endpunkt der Linie.

Befehl '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 Double
Die x-Koordinate des Endpunkts der Linie.

Befehl '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 Double
Die y-Koordinate des Endpunkts der Linie.

Befehl 'Kubische Bézierkurve'

Erstellt eine kubische Bézierkurve zwischen dem aktuellen Punkt und dem angegebenen Endpunkt mithilfe der beiden angegebenen Kontrollpunkte (controlPoint1 und controlPoint2). C 100,200 200,400 300,200 ist ein Beispiel für einen gültigen Kurvenbefehl. Definiert das Äquivalent eines PathGeometry -Objekts mit einem BezierSegment -Objekt.

Syntax
C controlPoint1 controlPoint2 endPoint
-oder-
c controlPoint1 controlPoint2 endPoint
Begriff Beschreibung
controlPoint1 Point
Der erste Kontrollpunkt der Kurve, der die beginnende Tangente der Kurve bestimmt.
controlPoint2 Point
Der zweite Kontrollpunkt der Kurve, der die endende Tangente der Kurve bestimmt.
endPoint 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. Definiert das Äquivalent eines PathGeometry-Werts mit einem QuadraticBezierSegment.

Syntax
Q controlPoint endPoint
-oder-
q controlPoint endPoint
Begriff Beschreibung
controlPoint Point
Der Kontrollpunkt der Kurve, der die beginnende und endende Tangente der Kurve bestimmt.
endPoint 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 kubischer Bézierkurvenbefehl oder ein glatter kubischer Bézierkurvenbefehl war, wird davon ausgegangen, dass der erste Kontrollpunkt mit dem aktuellen Punkt übereinstimmt. Der zweite Kontrollpunkt – der Kontrollpunkt für das Ende der Kurve – wird durch controlPoint2 angegeben. Ist z. B S 100,200 200,300 . ein gültiger Bézierkurvenbefehl in kubischer Bézierkurve. Mit diesem Befehl wird das Äquivalent eines PathGeometry-Werts mit einem BezierSegment definiert, in dem ein vorhergehendes Kurvensegment vorhanden war.

Syntax
ScontrolPoint2 Endpunkt
-oder-
scontrolPoint2 endPoint
Begriff Beschreibung
controlPoint2 Point
Der Kontrollpunkt der Kurve, der die endende Tangente der Kurve bestimmt.
endPoint Point
Der Punkt, bis zu dem die Kurve gezeichnet wird.

Befehl '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, wird der Kontrollpunkt mit dem aktuellen Punkt übereinstimmen. Mit diesem Befehl wird das Äquivalent eines PathGeometry-Werts mit einem QuadraticBezierSegment definiert, in dem ein vorhergehendes Kurvensegment vorhanden war.

Syntax
TcontrolPoint Endpunkt
-oder-
tcontrolPoint Endpunkt
Begriff Beschreibung
controlPoint Point
Der Kontrollpunkt der Kurve, der die beginnende Tangente der Kurve bestimmt.
endPoint Point
Der Punkt, bis zu dem die Kurve gezeichnet wird.

Befehl 'Elliptischer Bogen'

Erstellt einen elliptischen Bogen zwischen dem aktuellen Punkt und dem angegebenen Endpunkt. Definiert das Äquivalent eines PathGeometry-Elements mit einem ArcSegment.Defines the equivalent of a PathGeometry with an ArcSegment.

Syntax
A Größe rotationAngle isLargeArcFlag sweepDirectionFlag endPoint
-oder-
a Größe rotationAngle isLargeArcFlag sweepDirectionFlag endPoint
Begriff Beschreibung
size Größe
Der x-Radius und der Y-Radius des Bogens.
rotationAngle 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 Point
Der Punkt, bis zu dem der Bogen gezeichnet wird.

Befehl 'Schließen'

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

Punktsyntax

Beschreibt die X-Koordinate und die Y-Koordinate eines Punkts. Siehe auch Punkt.

Syntax
x,y
-oder-
xy
Begriff Beschreibung
x Double
Die x-Koordinate des Punkts.
y Double
Die y-Koordinate des Punkts.

Zusätzliche Hinweise

Anstelle eines numerischen Standardwerts können Sie auch die folgenden speziellen Werte verwenden. Bei diesen Werten wird die Groß-/Kleinschreibung beachtet.

  • Infinity: Stellt PositiveInfinity dar.
  • -Infinity: Stellt NegativeInfinity dar.
  • NaN: Stellt NaN dar.

Anstatt Dezimalstellen oder ganze Zahlen zu verwenden, können Sie die wissenschaftliche Schreibweise verwenden. +1.e17 ist zum Beispiel ein gültiger Wert.

Designtools zum Erstellen von Bewegungs- und Zeichnen-Befehlen

Die Verwendung des Stifttools und anderer Zeichentools in Blend für Microsoft Visual Studio 2015 erzeugt in der Regel ein Path-Objekt mit Verschieben- und Zeichnen-Befehlen.

Möglicherweise werden vorhandene Bewegungs- und Zeichnungsbefehlsdaten in einigen der Steuerelementteile angezeigt, die in den Windows-Runtime XAML-Standardvorlagen für Steuerelemente definiert sind. Einige Steuerelemente verwenden z. B. ein PathIcon , das die Daten enthält, die als Verschieben- und Zeichnen-Befehle definiert sind.

Es gibt Exporter oder Plug-Ins für andere häufig verwendete Vektorgrafikdesigntools, die den Vektor in XAML-Formular ausgeben können. Diese erstellen in der Regel Path-Objekte in einem Layoutcontainer mit Verschieben- und Zeichnen-Befehlen für Path.Data. Es können mehrere Path-Elemente im XAML-Code vorhanden sein, sodass verschiedene Pinsel angewendet werden können. Viele dieser Exporteure oder Plug-Ins wurden ursprünglich für Windows Presentation Foundation (WPF) XAML oder Silverlight geschrieben, die XAML-Pfadsyntax ist jedoch mit Windows-Runtime XAML identisch. In der Regel können Sie XAML-Datenblöcke aus einem Exporter verwenden und direkt in eine Windows-Runtime XAML-Seite einfügen. (Sie können jedoch keineRadialGradientBrush, wenn dies Teil des konvertierten XAML war, da Windows-Runtime XAML diesen Pinsel nicht unterstützt.)