Freigeben über


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 Befehlszeilen für Verschieben und Zeichnen 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 ins Detail zu gehen, zeigt sich das wie folgt:

<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 Befehle "Verschieben und Zeichnen" ein PathGeometry-Objekt mit einem einzelnen PathFigure-Objekt mit einem Figures-Eigenschaftswert . Jeder Draw-Befehl erzeugt eine PathSegment abgeleitete Klasse in der Segmentensammlung dieser einzelnen PathFigure, der Bewegungsbefehl ändert den StartPoint, und das Vorhandensein eines schließenden Befehls setzt IsClosed auf true. 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 zu 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 ein Großbuchstabe oder ein Kleinbuchstabe 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]moveCommanddrawCommand[drawCommand*][closeCommand]

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

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. Normalerweise wird Leerraum zwischen Befehlen zur besseren Lesbarkeit eingefügt.

Verwenden Sie keine Kommas als Dezimaltrennzeichen für Dezimalzahlen; die Befehlszeichenfolge wird von XAML interpretiert und berücksichtigt keine kulturspezifischen Konventionen zur Zahlenformatierung, die sich von denen unterscheiden, die im en-us-Gebietsschema 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ßgeschrieben.) 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 entsprechen den Werten der FillRule-Aufzählung.

Befehl 'Verschieben'

Gibt den Anfangspunkt einer neuen Abbildung an.

Syntax
M startPoint
– oder –
m startPoint
Begriff Description
startPoint Punkt
Der Anfangspunkt einer neuen Abbildung.

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

Anmerkung 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 Zeichenbefehlen 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 mehrere Befehle desselben Typs sequenziell eingeben, können Sie den doppelten Befehlseintrag weglassen. L 100,200 300,400 entspricht beispielsweise L 100,200 L 300,400.

Zeilenbefehl

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 Zeilenbefehle. Definiert das Äquivalent eines LineGeometry -Objekts.

Syntax
L Endpunkt
– oder –
l Endpunkt
Begriff Description
Endpunkt Punkt
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 Description
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 vertikale Linien.

Syntax
V y
-oder-
v y
Begriff Description
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 controlPoint1controlPoint2endPoint
-oder-
c controlPoint1controlPoint2endPoint
Begriff Description
controlPoint1 Punkt
Der erste Kontrollpunkt der Kurve, der die Anfangstangente der Kurve bestimmt.
controlPoint2 Punkt
Der zweite Kontrollpunkt der Kurve, der den endenden Tangens der Kurve bestimmt.
Endpunkt Punkt
Der Punkt, an 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 Gegenstück einer PathGeometry mit einem QuadraticBezierSegment.

Syntax
Q controlPoint endPoint
-oder-
q controlPoint endPoint
Begriff Description
controlPoint Punkt
Der Kontrollpunkt der Kurve, der die Anfangs- und Endtangente der Kurve bestimmt.
Endpunkt Punkt
Der Punkt, an 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 wird als Spiegelung des zweiten Kontrollpunkts des vorherigen Befehls relativ zum aktuellen Punkt angenommen. 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. Zum Beispiel ist S 100,200 200,300 ein gültiger glatter Befehl für eine kubische Bézierkurve. Mit diesem Befehl wird das Äquivalent einer PathGeometry mit einem BezierSegment definiert, wo zuvor ein Kurvensegment vorhanden war.

Syntax
S controlPoint2endPoint
-oder-
s Kontrollpunkt2 Endpunkt
Begriff Description
controlPoint2 Punkt
Der Kontrollpunkt der Kurve, der den endenden Tangens der Kurve bestimmt.
Endpunkt Punkt
Der Punkt, an 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 wird als Spiegelung des Kontrollpunkts des vorherigen Befehls relativ zum aktuellen Punkt angenommen. 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. Dieser Befehl definiert das Äquivalent eines PathGeometry mit einem QuadraticBezierSegment, an dem es zuvor ein Kurvensegment gab.

Syntax
T controlPointendPoint
-oder-
t controlPointendPoint
Begriff Description
controlPoint Punkt
Der Kontrollpunkt der Kurve, der den Anfangs- und Tangens der Kurve bestimmt.
Endpunkt Punkt
Der Punkt, an 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.

Syntax
A sizerotationAngleisLargeArcFlagsweepDirectionFlagendPoint
-oder-
a sizerotationAngleisLargeArcFlagsweepDirectionFlagendPoint
Begriff Description
Größe Größe
Der x-Radius und der Y-Radius des Bogens.
rotationAngle Double
Die Drehung der Ellipse in Grad.
isLargeArcFlag Auf 1 festgelegt, wenn der Winkel des Bogens 180 Grad oder höher sein soll; andernfalls auf 0 festgelegt.
sweepDirectionFlag Legen Sie den Wert 1 fest, wenn der Bogen in positiver Winkelrichtung gezeichnet wird; andernfalls legen Sie den Wert auf 0 fest.
Endpunkt Punkt
Der Punkt, an dem der Bogen gezeichnet wird.

Befehl 'Schließen'

Beendet die aktuelle Abbildung und erstellt eine Linie, die den aktuellen Punkt mit dem Ausgangspunkt der Abbildung verbindet. Dieser Befehl erstellt eine Linienverbindung zwischen dem letzten Segment und dem ersten Segment der Grafik.

Syntax
Z
-oder-
z

Punktsyntax

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

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

Weitere Hinweise

Anstelle eines standardmäßigen numerischen Werts können Sie auch die folgenden speziellen Werte verwenden. Diese Werte sind groß-/kleinbuchstabenempfindlich.

  • 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. Beispielsweise +1.e17 ist 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 Pfadobjekt mit Verschiebe- und Zeichne-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 auf einer Windows-Runtime-XAML-Seite einfügen. (Sie können jedoch keinen RadialGradientBrush verwenden, wenn dies Teil des konvertierten XAML war, da Windows-Runtime-XAML diesen Pinsel nicht unterstützt.)