ここでは、パスを記述するための Extensible Application Markup Language (XAML) を使用した構文について説明します。WPF は、ジオメトリック パスの記述に使用できる強力かつ複雑なミニ言語をサポートします。
このトピックは、次のセクションで構成されています。
必要条件
StreamGeometry および PathFigureCollection のミニ言語
WPF には、ジオメトリック パスを記述するためのミニ言語を提供する 2 つのクラス、StreamGeometry と PathFigureCollection が用意されています。
-
StreamGeometry のミニ言語は、UIElement の Clip プロパティや Path 要素の Data プロパティなど、Geometry 型のプロパティを設定する場合に使用します。属性構文を使用して、StreamGeometry を作成する例を次に示します。
<Path Stroke="Black" Fill="Gray"
Data="M 10,100 C 10,300 300,-200 300,100" />
-
PathFigureCollection のミニ言語は、PathGeometry の Figures プロパティを設定する場合に使用します。属性構文を使用して、PathGeometry の PathFigureCollection を作成する例を次に示します。
<Path Stroke="Black" Fill="Gray">
<Path.Data>
<PathGeometry Figures="M 10,100 C 10,300 300,-200 300,100" />
</Path.Data>
</Path>
前の例からわかるように、2 つのミニ言語はよく似ています。StreamGeometry を使用できる状況では必ず PathGeometry も使用できます。それではどちらを使用すればよいでしょうか。パスを作成後に変更する必要がない場合は、StreamGeometry を使用します。パスを変更する必要がある場合は、PathGeometry を使用します。
PathGeometry オブジェクトと StreamGeometry オブジェクトの違いの詳細については、「ジオメトリの概要」を参照してください。
空白に関する注意事項
次の構文のセクションでは、簡略化のためにスペースを 1 つしか表示していませんが、1 つのスペースの部分を複数のスペースにすることもできます。
2 つの数字を実際にコンマやスペースで区切る必要はありません。ただし、結果として得られる文字列が明確な場合に限ります。たとえば、2..3 は、実際には "2." と ".3" の 2 つの数字です。同様に、2-3 は “2” と “-3” です。コマンドの前後にスペースは不要です。
構文
Extensible Application Markup Language (XAML) 属性 StreamGeometry の構文は、省略可能な FillRule 値と 1 つ以上の図形の記述で構成されます。
|
XAML 属性 StreamGeometry の使用方法
|
| < object property="[fillRule] figureDescription[ figureDescription]*" ... /> |
Extensible Application Markup Language (XAML) 属性 PathFigureCollection の構文は、1 つ以上の図形の記述で構成されます。
|
XAML の属性 PathFigureCollection の使用方法
|
| < object property="figureDescription[ figureDescription]*" ... /> |
|
用語
|
説明
|
| fillRule | System.Windows.Media.FillRule StreamGeometry で EvenOdd または Nonzero の各 FillRule のうち、どちらを使用するかを指定します。 このコマンドを省略した場合は、サブパスによって既定の動作 (EvenOdd) が使用されます。このコマンドを指定する場合は、最初に配置する必要があります。 |
| figureDescription | 移動コマンド、描画コマンド、およびオプションの閉じるコマンドで構成される図形。 moveCommand drawCommands [ closeCommand ] |
| moveCommand | 図形の始点を指定する移動コマンド。「移動コマンド」を参照してください。 |
| drawCommands | 図形のコンテンツを記述する 1 つ以上の描画コマンド。「描画コマンド」を参照してください。 |
| closeCommand | 図形を閉じる、オプションの閉じるコマンド。「閉じるコマンド」を参照してください。 |
移動コマンド
新しい図形の始点を指定します。
|
構文
|
| M startPoint または m startPoint |
大文字の M は、startPoint が絶対値であることを示し、小文字の m は、startPoint が前の点へのオフセットであるか、前の点が存在しない場合は (0,0) であることを示します。移動コマンドの後に複数の点を示すとき、線コマンドを指定した場合には、これらの点に向けて線が描画されます。
描画コマンド
描画コマンドは、複数の図形コマンドで構成できます。使用できる図形コマンドには、線、横線、縦線、3 次ベジエ曲線、2 次ベジエ曲線、平滑 3 次ベジエ曲線、平滑 2 次ベジエ曲線、楕円の円弧があります。
各コマンドは、大文字または小文字を使用して入力します。大文字は絶対値を示し、小文字は相対値を示します。そのセグメントの制御点は前の例の終点に対して相対的です。同じ種類の複数のコマンドを連続的に入力する場合は、重複したコマンドの入力を省略できます。たとえば、L 100,200 300,400 は L 100,200 L 300,400 と同じです。移動コマンドと描画コマンドを次の表に示します。
線コマンド
現在の点と指定した終点の間に直線を作成します。l 20 30 と L 20,30 は、有効な線コマンドの例です。
|
構文
|
| L endPoint または l endPoint |
|
用語
|
説明
|
| endPoint | System.Windows.Point 線の終点。 |
横線コマンド
現在の点と指定した x 座標の間に横線を作成します。H 90 は、有効な横線コマンドの例です。
縦線コマンド
現在の点と指定した y 座標の間に縦線を作成します。v 90 は、有効な縦線コマンドの例です。
|
用語
|
説明
|
| y | System.Double 線の終点の y 座標。 |
3 次ベジエ曲線コマンド
指定した 2 つの制御点 (controlPoint1 と controlPoint2) を使用して、現在の点と指定した終点の間の 3 次ベジエ曲線を作成します。C 100,200 200,400 300,200 は、有効な曲線コマンドの例です。
|
構文
|
| C controlPoint1 controlPoint2 endPoint または c controlPoint1 controlPoint2 endPoint |
|
用語
|
説明
|
| controlPoint 1 | System.Windows.Point 曲線の開始接線を決定する、曲線の 1 つ目の制御点。 |
| controlPoint 2 | System.Windows.Point 曲線の終了接線を決定する、曲線の 2 つ目の制御点。 |
| endPoint | System.Windows.Point 曲線が描画される点。 |
2 次ベジエ曲線コマンド
指定した制御点 (controlPoint) を使用して、現在の点と指定した終点の間の 2 次ベジエ曲線を作成します。q 100,200 300,200 は、有効な 2 次ベジエ曲線コマンドの例です。
|
構文
|
| Q controlPoint endPoint または q contolPoint endPoint |
|
用語
|
説明
|
| controlPoint | System.Windows.Point 曲線の開始接線と終了接線を決定する、曲線の制御点。 |
| endPoint | System.Windows.Point 曲線が描画される点。 |
平滑 3 次ベジエ曲線コマンド
現在の点と指定した終点の間に 3 次ベジエ曲線を作成します。1 つ目の制御点は、現在の点を基準として前のコマンドの 2 つ目の制御点に点対称となります。前のコマンドが存在しない場合や、前のコマンドが 3 次ベジエ曲線コマンドまたは平滑 3 次ベジエ曲線コマンドでなかった場合、1 つ目の制御点は現在の点と同一のものと見なされます。2 つ目の制御点、つまり曲線の末尾の制御点は、controlPoint2 で指定します。たとえば、S 100,200 200,300 は、有効な平滑 3 次ベジエ曲線コマンドです。
|
構文
|
| S controlPoint2 endPoint または s controlPoint2 endPoint |
|
用語
|
説明
|
| controlPoint 2 | System.Windows.Point 曲線の終了接線を決定する、曲線の制御点。 |
| endPoint | System.Windows.Point 曲線が描画される点。 |
平滑 2 次ベジエ曲線コマンド
現在の点と指定した終点の間に 2 次ベジエ曲線を作成します。制御点は、現在の点を基準として前のコマンドの制御点に点対称となります。前のコマンドが存在しない場合や、前のコマンドが 2 次ベジエ曲線コマンドまたは平滑 2 次ベジエ曲線コマンドでなかった場合、制御点は現在の点と同一のものです。
|
構文
|
| T controlPoint endPoint または t controlPoint endPoint |
|
用語
|
説明
|
| controlPoint | System.Windows.Point 曲線の開始接線を決定する、曲線の制御点。 |
| endPoint | System.Windows.Point 曲線が描画される点。 |
楕円の円弧コマンド
現在の点と指定した終点の間に楕円の円弧を作成します。
|
構文
|
| A size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint または a size rotationAngle isLargeArcFlag sweepDirectionFlag endPoint |
|
用語
|
説明
|
| size | System.Windows.Size 円弧の x 半径と y 半径。 |
| rotationAngle | System.Double 円弧の回転 (角度)。 |
| isLargeArcFlag | 円弧の角度が 180 度を超える必要がある場合は 1 に設定します。それ以外の場合は 0 に設定します。 |
| sweepDirectionFlag | 円弧を正の角の方向に描画する場合は 1 に設定します。それ以外の場合は 0 に設定します。 |
| endPoint | System.Windows.Point 円弧が描画される点。 |
閉じるコマンド
現在の図形を終了し、現在の点と図形の開始点を結ぶ線を作成します。このコマンドは、図形の最後のセグメントと最初のセグメントの間に線結合 (角) を作成します。
点の構文
点の x 座標および y 座標 を記述します。
|
用語
|
説明
|
| x | System.Double 点の x 座標。 |
| y | System.Double 点の y 座標。 |
特殊な値
参照