1
我需要爲我的Windows窗體控件實現命中測試。我有一個繼承了Control
類我的自定義類和我畫畫,在OnPaint
方法,折線:命中測試Windows窗體圖形
e.Graphics.DrawLines(myPen, myPoints);
現在,MouseDown
活動期間,我得到鼠標的位置,我實現了命中測試樣遵循:
using (var path = new GraphicsPath())
{
path.AddLines(myPoints);
return path.IsVisible(pt);
}
的問題是,如果有,例如,在圖中折線(這似乎是一個多邊形)的IsVisible
方法返回true,即使我單擊代表該多邊形區域內:
我需要不同的行爲,只有當我點擊該行時方法纔會返回true。 我該怎麼辦?
更好的解決方案是創建一個代表您想要的表單的對象/ * *模型*,它將自行繪製。然後,對象將負責檢查它是否被擊中(在哪個區域)而不是主程序。在主應用程序中,您只需爲要檢查的每個對象傳遞鼠標座標。 – pasty
@pasty謝謝你的建議,實際上我就像你說的那樣。這個問題只是一個更簡單的例子。 – Nick
@Nick,因爲我發佈在[答案](http://stackoverflow.com/a/23443391/1207195),你只需要用'IsOutlineVisible'替換'IsVisible'。 –