我有一个 win forms 应用程序,我可以在其中绘制一些形状(如矩形/圆形),也可以用颜色填充它们。现在,如果我选择画笔来填充形状(比如矩形)并单击形状的“边界”(在这种情况下我不想填充形状),我如何检测到“点”是否打开形状的边界(我的意思是“边缘”)。
问问题
700 次
2 回答
1
将您的形状表示为 GraphicsPath,然后使用IsOutlineVisible确定该点是否位于轮廓下方。
IsVisible() 方法将告诉您该点是否在整个 GraphicsPath 中。
于 2013-07-12T14:40:34.190 回答
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.Heigh 等矩形
对于不同但“常规”的形状,您应该以类似的方式计算它
对于复杂和不规则的形状,您应该将其分解为小块并进行相同的计算:
检查这个:确定一个点是否位于任意形状内?
如果可以将形状转换为位图,另一种方法可能是检查像素颜色,但这只有在形状边缘颜色与形状中的其他像素不同时才有效
于 2013-07-12T13:02:34.673 回答