如何检测点是否在形状的边界(即“边缘”)上

时间:2013-07-12 12:45:47

标签: c# drawing paint

我有一个win表单应用程序,我可以在其中绘制一些形状(如矩形/圆形),也可以用颜色填充它们。 现在,如果我选择一个画笔来填充一个形状(比如矩形)并点击形状的'边界'(我不想在这种情况下填充形状), 我怎样才能发现'点'在一个形状的边界(我的意思是'边'')上。

2 个答案:

答案 0 :(得分:1)

你有两个形状位置的坐标。

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.Heigh,等等于矩形

对于不同但“常规”的形状,你应该以类似的方式计算它

对于复杂和不规则的形状,您应该将其分解为小块并进行相同的计算:

检查一下:determine if a point sits inside an arbitrary shape?

如果形状可以转换为位图,则另一种方法可能是检查像素颜色,但这只有在形状边缘颜色与形状中的其他像素不同时才有效

答案 1 :(得分:1)

将您的形状表示为GraphicsPath,然后使用IsOutlineVisible确定该点是否在轮廓下。

IsVisible()方法将告诉您该点是否在整个GraphicsPath中。