いくつかのポイントを取り、パスを構築するために複数の LineSegments を作成するコードが少しあります。
System.Windows.Shapes.Path pathSegment = new System.Windows.Shapes.Path();
PathFigure pathFig = new PathFigure();
PathGeometry pathGeo = new PathGeometry();
pathFig.StartPoint = new Point(pointData[0].X, pointData[0].Y);
for (int loop = 1; loop < pointData.Count; loop++)
{
LineSegment ls = new LineSegment();
ls.Point = new Point(pointData[loop].X, pointData[loop].Y);
pathFig.Segments.Add(ls);
}
pathGeo.Figures.Add(pathFig);
pathSegment.Data = pathGeo;
pathSegment.Stroke = brush;
pathSegment.StrokeThickness = 22;
これにより、幅が 22px (おおよそ) の線が作成されます。これで実際のデータを見ると、LineSegement 要素のみが表示されます。これにより、基本的に次のような出力が得られます。実際の線は黒で、実際に表示される線は灰色です (危険な mspaint スケッチを許してください)。
ここで、Geometry で StrokeContains を実行して、指定した Point が上の pathSegment 全体 (灰色の領域) 内にあるかどうかを確認します。ただし、実際に行うことは、LineSegments (黒い線) に対するチェックです。
パスを構築するためのより良い方法はありますか? または、StrokeWidth を含む pathSegment を新しいパスに変換する方法はありますか?