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