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

本文关键字:边界 边缘 检测 何检测 一个 是否 | 更新日期: 2023-09-27 18:22:10

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

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

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

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

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

shape.X
shape.Y

你还有形状的大小

shape.Height
shape.Width

你有鼠标位置的坐标

mouse.X
mouse.Y

如果鼠标。X介于形状之间。X和形状。X+形状。宽度和鼠标。Y等于形状。Y或形状。矩形的Y+形状、高度等

对于不同但"规则"的形状,你应该用类似的计算

对于复杂和不规则的形状,你应该把它分解成小块,并进行同样的计算:

检查这个:确定一个点是否位于任意形状内?

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