【问题标题】:How to detect if a point is on the boundary( i.e 'edges') of a shape如何检测一个点是否在形状的边界(即“边缘”)上
【发布时间】:2013-07-12 12:45:47
【问题描述】:

我有一个 win forms 应用程序,我可以在其中绘制一些形状(如矩形/圆形),也可以用颜色填充它们。 现在,如果我选择了一个画笔来填充一个形状(比如矩形)并单击形状的“边界”(在这种情况下我不想填充形状), 我如何检测到“点”在形状的边界(我的意思是“边缘”)上。

【问题讨论】:

    标签: c# drawing paint


    【解决方案1】:

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

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

    【讨论】:

    • 好答案!不知道GraphicsPath! +1
    • .Net 是一个大世界。我已经使用它十年了,我仍在发现“新”功能;至少它们对我来说是“新的”!
    【解决方案2】:

    您有 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 等矩形

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

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

    检查这个:determine if a point sits inside an arbitrary shape?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 2023-03-20
      • 1970-01-01
      相关资源
      最近更新 更多