65.9K
CodeProject 正在变化。 阅读更多。
Home

线到区域

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.55/5 (9投票s)

2007年6月6日

CPOL

1分钟阅读

viewsIcon

26463

downloadIcon

686

这个类接收一个 Pointf 类型的点数组,并返回具有自定义宽度的相应线条区域。

背景

去年夏天,当我尝试为我的软件编写图表控件时,我注意到我的程序无法区分图表线条和形状,并且我必须在绘图上制作自动信息提示,当鼠标移动到对象上时会激活。我制作了一个类,它接收一个 Pointf 类型的点数组,并返回具有自定义宽度的相应 Region。这很有帮助,这就是为什么我现在可以创建一个带有所有普通事件(如 MouseMove、MouseClick 等)的 UserControlControl,并将它的区域设置为我的自定义区域,并将其添加到我的项目中作为散点图。数学理论很简单。假设我们有一个包含三个点 A、B 和 C 的 Pointf 数组。

Screenshot - untitled.jpg

以下是创建区域的过程

  1. 计算角度 β 的角平分线的斜率。
  2. 确定角平分线上两点,它们与 B 的距离相等(成对的点)。
  3. 对于所有真实点,我们创建这两点。
  4. 将根据最近的成对点验证每个成对点的位置。
  5. 将生成两个包含两侧点的数组。
  6. 两个数组将连接在一起并生成区域。

使用代码

要使用这个类,只需实例化它并调用 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)

//
© . All rights reserved.