2011-04-07 221 views
0

我希望用戶使用鼠標定義多邊形並單擊以定義點。第二個任務是我有一組定義的多邊形,我想檢查一些隨機生成的點是否位於這些多邊形中的任何一個。多邊形繪圖

我正在C#.net平臺上工作。謝謝。

+0

聽起來很不錯。你試過什麼了? – 2011-04-07 04:35:50

+0

你的問題看起來像你甚至沒有試圖自己做 - 我相信你有,但你應該給我們一些你已經嘗試過的細節,我們會盡力讓你走上正確的道路。 – 2011-04-07 04:49:21

+0

我已經考慮過這個方法,但還沒有完全嘗試過,因爲我不確定可以使用哪些方法。那麼我想將這些點存儲在一個列表中。然後使用列表元素來定義一個多邊形。然後檢查某個特定點是否位於各個多邊形內。沒有任何內置的函數來檢查一個點是否在一個多邊形中,VC++有一個這樣的類型。凸和凹不是問題,因爲多邊形將由用戶定義它們的順序來定義。謝謝.. – olive 2011-04-07 05:04:45

回答

1

我問了一個非常類似的問題一段時間回來,你可能會發現answers there是一個很好的起點。

0

舊的線程,但直接的解決方案。如果充分利用Graphics和Drawing2D命名空間,這實際上很簡單。

GraphicsPath.AddLines(Point[])

Graphics.DrawPath(Drawing2D.GraphicsPath)

Graphics.FillPath(Drawing2D.GraphicsPath)

GraphcisPath.CloseFigure()

所以你只需創建一個新的路徑,然後調用傳遞貴點陣列AddLines,然後調用CloseFigure。

如果您想用筆描畫它,請使用DrawPath。如果您想用畫筆填充它,請使用FillPath。

多邊形內任何點的點擊測試也很簡單,您可以使用Drawing.Region(Drawing2D.GraphicsPath)以及任何允許指定位置和圖形對象的過載Region.IsVisible