0

凹面ポリゴンで作業する必要があります。基本的に、それらの幅と高さ、点が多角形の内側にあるかどうかを知る方法、およびおそらくそれに外接する長方形の x、y 座標を知る必要があります (したがって、ドラッグ アンド ドロップ機能を簡単に実装できます)。何を使用できますか?

カスタムの Polygon タイプを定義することはできますが、ポリゴンが凹状であることを考えると、「Contains」の従来の方法を実装するには問題があります。

提案しますか?

4

3 に答える 3

1

特にClassを使用するShapeと、これらのオブジェクトとやり取りするのは特に簡単ですが、何千ものエッジを扱う場合は、Classを使用することをお勧めします。その方法。PolygonDrawingVisualRenderOpen

DrawingVisualではイベント処理が提供されないため、イベントをShape使用してエッジとやり取りできる場合は、 Hit-TestingDrawingVisualを実装する必要があります。

要素のプロパティPolygonを知ってHeightWidth簡単に使用できます。

Pointaがポリゴン内にあるかどうかを確認したい場合は、 InputHitTestMethodまたは esle the VisualTreeHelper.HitTestMethodを使用できます。

let res = yourPolygon.InputHitTest(new Point(x, y))
let res = VisualTreeHelper.HitTest(yourPolygon, new Point(x, y))

結論として、ポイントがポリゴンの内側にあるかどうかを確認するエレガントな方法を探している場合は、この回答をご覧ください。

于 2012-06-13T11:13:28.937 に答える
1

使用できますSystem.Drawing.Drawing2D.GraphicsPath

GraphicsPath path = new GraphicsPath();
path.AddPolygon(new[] {new Point(0,1), new Point(5,8), new Point(2,4)});

bool isPointInPolygon = path.IsVisible(4, 1);
于 2012-06-13T00:10:17.933 に答える
0

ポイントがポリゴン内にあるかどうかを確認するための優れたルーチンがいくつかあります。http://www.softsurfer.com/Archive/algorithm_0103/algorithm_0103.htmをチェックしてください

于 2012-06-13T00:02:18.263 に答える