线到区域






3.55/5 (9投票s)
这个类接收一个 Pointf
类型的点数组,并返回具有自定义宽度的相应线条区域。
背景
去年夏天,当我尝试为我的软件编写图表控件时,我注意到我的程序无法区分图表线条和形状,并且我必须在绘图上制作自动信息提示,当鼠标移动到对象上时会激活。我制作了一个类,它接收一个 Pointf
类型的点数组,并返回具有自定义宽度的相应 Region
。这很有帮助,这就是为什么我现在可以创建一个带有所有普通事件(如 MouseMove、MouseClick 等)的 UserControl
或 Control
,并将它的区域设置为我的自定义区域,并将其添加到我的项目中作为散点图。数学理论很简单。假设我们有一个包含三个点 A、B 和 C 的 Pointf
数组。
以下是创建区域的过程
- 计算角度 β 的角平分线的斜率。
- 确定角平分线上两点,它们与 B 的距离相等(成对的点)。
- 对于所有真实点,我们创建这两点。
- 将根据最近的成对点验证每个成对点的位置。
- 将生成两个包含两侧点的数组。
- 两个数组将连接在一起并生成区域。
使用代码
要使用这个类,只需实例化它并调用 FTR
函数并提供参数即可。
在示例文件中,生成一个 sin(x) 数组,然后将其传递给函数以检索区域(此处省略了代码的某些部分)。
//
Dim FTR As New FunctionToRegion.FunctionToRegion
Dim pnt(500) As PointF
For i As Double = 0 To 500
pnt(i).X = i
pnt(i).Y = 110 + 100 * Math.Sin(i / 50)
Next
Region = FTR.FTR(pnt, 4)
//