タイトルの通りです。私自身知らなくて、四苦八苦していました。
一度描画した線から Point オブジェクト を取得したい場合は「PathGeometry」を使います。
マウスとかで線をグリグリしたいなら「PathGeometry」、装飾品のように変わらない線を描きたいなら「StreamGeometry」を使い分けた方がよいです。
「StreamGeometry」は、データバインディングやアニメーション、線の変更ができない替わりに描画の負荷が少ないらしい。
XAML で描いた Path は StreamGeometry になる
試しに、XAML で Path を描いて クイックウォッチでデータ構造を見てみます。
1 | <Path |
Path が StreamGeometry 型 で Point オブジェクトが存在しません。
コードビハインドで StreamGeometry の線を引く
次に、XAML で描いた線と同じ線を コードビハインド で描いてみます。
1 | StreamGeometry geometry = new StreamGeometry(); |
XAML で描いたときと同じデータ構造になっていることが分かります。
コードビハインドで PathGeometry の線を引く
XAML で PathGeometry の線 が描けないので、コードビハインド で PathGeometry の線を描きます。
1 | PathGeometry geometry = new PathGeometry(); |
クイックウォッチで Path のデータ構造を見ると PathGeometry 型 なのが分かります。
PathGeometry の Point を取得するには?
PathGeometry の Point を取得するには?
1 | var point3 = ((BezierSegment)((PathGeometry)path.Data).Figures[0].Segments[0]).Point3; |
これで、一度描画した線でもグリグリ動かす事ができます。