パス マークアップ構文Path Markup Syntax

パスについては、「WPF の図形と基本描画の概要」と「ジオメトリの概要」で説明されていますが、このトピックでは、パス ジオメトリをよりコンパクトに指定するために使用できる強力で複雑なミニ言語についてExtensible Application Markup Language (XAML)Extensible Application Markup Language (XAML)詳しく説明します。Paths are discussed in Shapes and Basic Drawing in WPF Overview and the Geometry Overview, however, this topic describes in detail the powerful and complex mini-language you can use to specify path geometries more compactly using Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML).

必須コンポーネントPrerequisites

このトピックを理解するには、オブジェクトのGeometry基本的な機能を理解している必要があります。To understand this topic, you should be familiar with the basic features of Geometry objects. 詳細については、「ジオメトリの概要」を参照してください。For more information, see the Geometry Overview.

StreamGeometry ミニ言語と PathFigureCollection ミニ言語StreamGeometry and PathFigureCollection Mini-Languages

WPFWPFには、ジオメトリック パスを記述するためのミニ言語を提供するStreamGeometry PathFigureCollection2 つのクラスがあります。provides two classes that provide mini-languages for describing geometric paths: StreamGeometry and PathFigureCollection.

前の例からわかるように、2 つのミニ言語はほとんど同じです。As you can see from the preceding examples, the two mini-languages are very similar. を使用できるどんな状況PathGeometryでも、常に使用することができます。 StreamGeometryだから、あなたはどちらを使用する必要がありますか?It's always possible to use a PathGeometry in any situation where you could use a StreamGeometry; so which one should you use? パスをStreamGeometry作成した後で変更する必要がない場合は、 を使用します。パスをPathGeometry変更する必要がある場合は a を使用します。Use a StreamGeometry when you don't need to modify the path after creating it; use a PathGeometry if you do need to modify the path.

オブジェクトPathGeometryStreamGeometryオブジェクトの違いの詳細については、「ジオメトリの概要」を参照してください。For more information about the differences between PathGeometry and StreamGeometry objects, see the Geometry Overview.

空白についてのメモA Note about White Space

簡潔にするために、この後のセクションで示す構文には 1 つの空白が使用されていますが、1 つの空白を使用できるところでは、常に複数の空白スペースも許容されます。For brevity, a single space is shown in the syntax sections that follow, but multiple spaces are also acceptable wherever a single space is shown.

2 つの数値は、実際にはコンマまたは空白で区切る必要はありませんが、結果の文字列が明確でない場合にのみ行うことができます。Two numbers don’t actually have to be separated by a comma or white space, but this can only be done when the resulting string is unambiguous. たとえば、2..3実際には2つの数字です。For instance, 2..3 is actually two numbers: "2." と ".3" ) です。And ".3". 同様に2-3、"2" と "-3" です。Similarly, 2-3 is "2" and "-3". どちらの場合も、コマンドの前後に空白は必要ありません。Spaces are not required before or after commands, either.

構文Syntax

属性Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML)の使用法の構文StreamGeometryは、オプションFillRuleの値と 1 つ以上の図形の説明で構成されます。The Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) attribute usage syntax for a StreamGeometry is composed of an optional FillRule value and one or more figure descriptions.

StreamGeometry XAML 属性使用構文StreamGeometry XAML Attribute Usage
<オブジェクト**property="プロパティfillRule figureDescription[ figureDescription] [ ]" ... />< object property ="[ fillRule] figureDescription[ figureDescription]* " ... />

属性Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML)の使用法はPathFigureCollection、1 つ以上の図形の説明で構成されます。The Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) attribute usage syntax for a PathFigureCollection is composed of one or more figure descriptions.

PathFigureCollection XAML 属性使用構文PathFigureCollection XAML Attribute Usage
<オブジェクト**property="``figureDescriptionプロパティfigureDescription[ ]*" ... />< object property =" figureDescription[ figureDescription]* " ... />
期間Term 説明Description
fillRulefillRule System.Windows.Media.FillRule

が をStreamGeometry使用EvenOddするかどうかを指定NonzeroFillRuleします。Specifies whether the StreamGeometry uses the EvenOdd or NonzeroFillRule.

- F0塗りつぶしEvenOddルールを指定します。- F0 specifies the EvenOdd fill rule.
- F1塗りつぶしNonzeroルールを指定します。- F1 specifies the Nonzero fill rule.

このコマンドを省略すると、サブパスはデフォルトの動作EvenOdd(.If you omit this command, the subpath uses the default behavior, which is EvenOdd. このコマンドを指定する場合は、先頭に配置する必要があります。If you specify this command, you must place it first.
figureDescriptionfigureDescription 移動コマンドと描画コマンド (および省略可能な閉じるコマンド) で構成される図形。A figure composed of a move command, draw commands, and an optional close command.

moveCommand drawCommands [ closeCommand ]moveCommand drawCommands [ closeCommand ]
moveCommandmoveCommand 図形の開始位置を指定する移動コマンド。A move command that specifies the start point of the figure. 移動コマンド」セクションを参照してください。See the Move Command section.
drawCommandsdrawCommands 図の内容を記述する 1 つまたは複数の描画コマンド。One or more drawing commands that describe the figure's contents. コマンドの描画」セクションを参照してください。See the Draw Commands section.
closeCommandcloseCommand 図形を閉じるコマンド (省略可能)。An optional close command that closes figure. コマンドを閉じる」セクションを参照してください。See the Close Command section.

移動コマンドMove Command

新しい図形の始点を指定します。Specifies the start point of a new figure.

構文Syntax
MスタートポイントM startPoint

- または -- or -

mスタートポイントm startPoint
期間Term 説明Description
startPointstartPoint System.Windows.Point

新しい図形の始点。The start point of a new figure.

大文字Mは絶対値であることをstartPoint示します。小文字mは、前startPointの点へのオフセットであることを示し、(0,0) が存在しない場合は、その点を示します。An uppercase M indicates that startPoint is an absolute value; a lowercase m indicates that startPoint is an offset to the previous point, or (0,0) if none exists. 移動コマンドの後ろに複数の点を指定した場合は、直線コマンドを指定した場合でも、これらの点を結ぶ線が描画されます。If you list multiple points after the move command, a line is drawn to those points though you specified the line command.

描画コマンドDraw Commands

描画コマンドは、さまざまな図形コマンドで構成できます。A draw command can consist of several shape commands. 次の図形のコマンドを使用できます。直線、水平線、垂直線、3 次ベジエ曲線、2 次ベジエ曲線、スムーズ 3 次ベジエ曲線、スムーズ 2 次ベジエ曲線、および楕円の円弧。The following shape commands are available: line, horizontal line, vertical line, cubic Bezier curve, quadratic Bezier curve, smooth cubic Bezier curve, smooth quadratic Bezier curve, and elliptical arc.

各コマンドは、大文字または小文字で入力します。大文字は絶対値を、小文字は相対値を表し、そのセグメントの制御点は、前の例の終点を基準とします。You enter each command by using either an uppercase or a lowercase letter: uppercase letters denote absolute values and lowercase letters denote relative values: the control points for that segment are relative to the end point of the preceding example. 同じタイプの複数のコマンドを順次入力する場合は、重複するコマンド入力を省略できます。たとえば、L 100,200 300,400と同じL 100,200 L 300,400値を使用します。When sequentially entering more than one command of the same type, you can omit the duplicate command entry; for example, L 100,200 300,400 is equivalent to L 100,200 L 300,400. 次の表では、移動コマンドと描画コマンドについて説明します。The following table describes the move and draw commands.

直線コマンドLine Command

現在の点と指定された終点の間に直線を作成します。Creates a straight line between the current point and the specified end point. l 20 30有効L 20,30コマンドの例です。l 20 30 and L 20,30 are examples of valid line commands.

構文Syntax
LエンドポイントL endPoint

- または -- or -

lエンドポイントl endPoint
期間Term 説明Description
エンドポイントendPoint System.Windows.Point

線の終点。The end point of the line.

大文字Lは絶対値であることをendPoint示します。小文字lは、前endPointの点へのオフセットであることを示し、(0,0) が存在しない場合は、その点を示します。An uppercase L indicates that endPoint is an absolute value; a lowercase l indicates that endPoint is an offset to the previous point, or (0,0) if none exists.

水平線コマンドHorizontal Line Command

現在の点と指定された x 座標の間に水平線を作成します。Creates a horizontal line between the current point and the specified x-coordinate. H 90 は、有効な水平線コマンドの例です。H 90 is an example of a valid horizontal line command.

構文Syntax
H XH x

- または -- or -

h Xh x
期間Term 説明Description
Xx System.Double

直線の終点の x 座標。The x-coordinate of the end point of the line.

大文字Hは絶対値であることをx示します。小文字hは、前xの点へのオフセットであることを示し、(0,0) が存在しない場合は、その点を示します。An uppercase H indicates that x is an absolute value; a lowercase h indicates that x is an offset to the previous point, or (0,0) if none exists.

垂直線コマンドVertical Line Command

現在の点と指定された y 座標の間に垂直線を作成します。Creates a vertical line between the current point and the specified y-coordinate. v 90 は、有効な垂直線コマンドの例です。v 90 is an example of a valid vertical line command.

構文Syntax
V YV y

- または -- or -

v Yv y
期間Term 説明Description
Yy System.Double

直線の終点の y 座標。The y-coordinate of the end point of the line.

大文字Vは絶対値であることをy示します。小文字vは、前yの点へのオフセットであることを示し、(0,0) が存在しない場合は、その点を示します。An uppercase V indicates that y is an absolute value; a lowercase v indicates that y is an offset to the previous point, or (0,0) if none exists.

3 次ベジエ曲線コマンドCubic Bezier Curve Command

指定した 2 つのコントロール ポイント (1controlPointcontrolPoint2) を使用して、現在の点と指定した終点の間に 3 次ベジエ曲線を作成します。Creates a cubic Bezier curve between the current point and the specified end point by using the two specified control points (controlPoint1 and controlPoint2). C 100,200 200,400 300,200 は、有効な曲線コマンドの例です。C 100,200 200,400 300,200 is an example of a valid curve command.

構文Syntax
C``controlPoint1controlPoint2endPointC controlPoint1controlPoint2endPoint

- または -- or -

c``controlPoint1controlPoint2endPointc controlPoint1controlPoint2endPoint
期間Term 説明Description
controlPoint1controlPoint1 System.Windows.Point

曲線の 1 つ目の制御点。曲線の前半の接線を決定します。The first control point of the curve, which determines the starting tangent of the curve.
controlPoint2controlPoint2 System.Windows.Point

曲線の 2 つ目の制御点。曲線の後半の接線を決定します。The second control point of the curve, which determines the ending tangent of the curve.
endPoint System.Windows.Point

曲線が描画される点。The point to which the curve is drawn.

2 次ベジエ曲線コマンドQuadratic Bezier Curve Command

指定されたコントロール ポイント ()controlPointを使用して、現在の点と指定した終点の間に 2 次ベジエ曲線を作成します。Creates a quadratic Bezier curve between the current point and the specified end point by using the specified control point (controlPoint). q 100,200 300,200 は、有効な 2 次ベジエ曲線コマンドの例です。q 100,200 300,200 is an example of a valid quadratic Bezier curve command.

構文Syntax
Q controlPoint endPointQ controlPoint endPoint

- または -- or -

q controlPoint endPointq controlPoint endPoint
期間Term 説明Description
controlPoint System.Windows.Point

曲線の制御点。曲線の前半と後半の接線を決定します。The control point of the curve, which determines the starting and ending tangents of the curve.
endPoint System.Windows.Point

曲線が描画される点。The point to which the curve is drawn.

スムーズ 3 次ベジエ曲線コマンドSmooth cubic Bezier curve Command

現在の点と指定された終点の間に 3 次ベジエ曲線を作成します。Creates a cubic Bezier curve between the current point and the specified end point. 1 つ目の制御点は、現在の点に対する前のコマンドの 2 つ目の制御点のリフレクションと見なされます。The first control point is assumed to be the reflection of the second control point of the previous command relative to the current point. 前のコマンドが存在しない場合、または前のコマンドが 3 次ベジエ曲線コマンドまたはスムーズ 3 次ベジエ曲線コマンドでなかった場合、1 つ目の制御点は、現在の点と一致するとみなされます。If there is no previous command or if the previous command was not a cubic Bezier curve command or a smooth cubic Bezier curve command, assume the first control point is coincident with the current point. 2 番目の制御点は、曲線の終点の制御点で、2controlPointで指定されます。The second control point, the control point for the end of the curve, is specified by controlPoint2. たとえば、S 100,200 200,300有効なスムーズな 3 次ベジェ曲線コマンドです。For example, S 100,200 200,300 is a valid smooth cubic Bezier curve command.

構文Syntax
S``controlPoint2endPointS controlPoint2endPoint

- または -- or -

s``controlPoint2endPoints controlPoint2endPoint
期間Term 説明Description
controlPoint2controlPoint2 System.Windows.Point

曲線の制御点。曲線の後半の接線を決定します。The control point of the curve, which determines the ending tangent of the curve.
endPoint System.Windows.Point

曲線が描画される点。The point to which the curve is drawn.

スムーズ 2 次ベジエ曲線コマンドSmooth quadratic Bezier curve Command

現在の点と指定された終点の間に 2 次ベジエ曲線を作成します。Creates a quadratic Bezier curve between the current point and the specified end point. 制御点は、現在の点に対する前のコマンドの制御点のリフレクションと見なされます。The control point is assumed to be the reflection of the control point of the previous command relative to the current point. 前のコマンドが存在しない場合、または前のコマンドが 2 次ベジエ曲線コマンドまたはスムーズ 2 次ベジエ曲線コマンドでなかった場合、制御点は、現在の点と一致するとみなされます。If there is no previous command or if the previous command was not a quadratic Bezier curve command or a smooth quadratic Bezier curve command, the control point is coincident with the current point.

構文Syntax
T controlPoint endPointT controlPoint endPoint

- または -- or -

t controlPoint endPointt controlPoint endPoint
期間Term 説明Description
controlPoint System.Windows.Point

曲線の制御点。曲線の前半の接線を決定します。The control point of the curve, which determines the starting and tangent of the curve.
endPoint System.Windows.Point

曲線が描画される点。The point to which the curve is drawn.

楕円の円弧コマンドElliptical Arc Command

現在の点と指定された終点の間に楕円の円弧を作成します。Creates an elliptical arc between the current point and the specified end point.

構文Syntax
A size rotationAngle isLargeArcFlag sweepDirectionFlag endPointA size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint

- または -- or -

a size rotationAngle isLargeArcFlag sweepDirectionFlag endPointa size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint
期間Term 説明Description
size System.Windows.Size

円弧の x 半径と y 半径。The x- and y-radius of the arc.
rotationAngle System.Double

楕円の回転 (度単位)。The rotation of the ellipse, in degrees.
isLargeArcFlag 円弧の角度を 180 度以上にする場合は 1 に設定します。それ以外の場合は 0 に設定します。Set to 1 if the angle of the arc should be 180 degrees or greater; otherwise, set to 0.
sweepDirectionFlag 円弧が正の角度の方向に描画される場合は 1 に設定します。それ以外の場合は 0 に設定します。Set to 1 if the arc is drawn in a positive-angle direction; otherwise, set to 0.
endPoint System.Windows.Point

円弧が描画される点。The point to which the arc is drawn.

閉じるコマンドThe Close Command

現在の図形を終了し、現在の点と図の開始点を結ぶ線を作成します。Ends the current figure and creates a line that connects the current point to the starting point of the figure. このコマンドは、図形の最初のセグメントと最後のセグメントの間に線結合 (コーナー) を作成します。This command creates a line-join (corner) between the last segment and the first segment of the figure.

構文Syntax
Z

- または -- or -

z

点の構文Point Syntax

(0,0) が左上隅である点の x 座標と y 座標を記述します。Describes the x- and y-coordinates of a point where (0,0) is the top left corner.

構文Syntax
x , yx , y

- または -- or -

x yx y
期間Term 説明Description
x System.Double

点の x 座標。The x-coordinate of the point.
y System.Double

点の y 座標。The y-coordinate of the point.

特殊な値Special Values

標準的な数値ではなく、次の特殊な値を使用することもできます。Instead of a standard numerical value, you can also use the following special values. これらの値では、大文字と小文字が区別されます。These values are case-sensitive.

InfinityInfinity
Double.PositiveInfinity表します。Represents Double.PositiveInfinity.

-Infinity-Infinity
Double.NegativeInfinity表します。Represents Double.NegativeInfinity.

(NaN)NaN
Double.NaN表します。Represents Double.NaN.

指数表記を使用することもできます。You may also use scientific notation. たとえば、+1.e17 は有効な値です。For example, +1.e17 is a valid value.

関連項目See also