2013-07-12 126 views
1

我有一個勝利形式的應用程序,我可以在其中繪製一些形狀(如矩形/圓形),也可以填充顏色。 現在,如果我選擇了一個畫筆來填充一個形狀(比如矩形),然後單擊形狀的'邊界'(我不想在這種情況下填充形狀), 如何檢測'點'在形狀的邊界上(我的意思是'邊緣')。如何檢測一個點是否在形狀的邊界(即'邊緣')

回答

1

將形狀表示爲GraphicsPath,然後使用IsOutlineVisible來確定是否這一點在綱要之下。

IsVisible()方法會告訴你該點是否在整個GraphicsPath中。

+0

很好的答案!不知道GraphicsPath! +1 – giammin

+0

@Idle_Mind:非常感謝。我永遠不會找到這個。 –

+0

.Net是一個大世界。我已經使用它十年了,而且我仍然在發現「新」功能;至少他們對我來說是「新」! –

1

你有2個座標的形狀位置。

shape.X 
shape.Y 

你還形狀的大小

shape.Height 
shape.Width 

你有鼠標位置的座標

mouse.X 
mouse.Y 

如果mouse.X是shape.X和shape.X之間+ shape.Width和mouse.Y等於shape.Y或shape.Y + shape。對於矩形的高等等

對於不同的但「正規」的形狀,你應該計算它在similarway

對於複雜的和不規則的形狀,你應該把它驚到SMaL公司件,照此計算:

檢查:determine if a point sits inside an arbitrary shape?

如果形狀被轉換爲位圖的另一種方式可能是檢查像素顏色,但只有當形狀邊緣顏色與形狀中的其他像素不同時,這才起作用