Winforms Chart - 在折线图上绘制允许的区域

2024-05-05

如何在图表上绘制灰色区域(信号的允许范围)?
我使用 Winforms 和标准 MicrosoftSystem.Windows.Forms.DataVisualization类。
它应该是自定义范围,这意味着起始 Y 点不能仅为零。
我在运行时在线获得的点一一得到。

UPDATE:

我尝试了 StripLine - 没问题,但我不知道如何在 2d 中定义起点。可以仅在 X 上设置,也可以仅在 Y 上设置。我尝试使用第二个图表(区域),但这不是我需要的......

UPDATE2:
感谢@Reza Aghaei!

这里的代码效果很好:

void drawAllowedArea(Point startPoint, Point endPoint, PaintEventArgs e)
{
      var l = (float)chart1.ChartAreas[0].AxisX.ValueToPixelPosition(startPoint.X);
      var t = (float)chart1.ChartAreas[0].AxisY.ValueToPixelPosition(endPoint.Y);
      var r = (float)chart1.ChartAreas[0].AxisX.ValueToPixelPosition(endPoint.X);
      var b = (float)chart1.ChartAreas[0].AxisY.ValueToPixelPosition(startPoint.Y);
      var rect = RectangleF.FromLTRB(l, t, r, b);
      using (var br = new SolidBrush(Color.FromArgb(100, Color.Blue))) 
      {
           e.Graphics.FillRectangle(br, rect.X, rect.Y, rect.Width, rect.Height);
      }
      e.Graphics.DrawRectangle(Pens.Red, rect.X, rect.Y, rect.Width, rect.Height);
}

//and use this function in chart1_Paint event:
void chart1_Paint(object sender, PaintEventArgs e)
{
      drawAllowedArea(new Point(20, 50000), new Point(40, 100000), e);
}

更新结束 ---------------------------------------------------------- ----------

万分感谢!


你可以处理Paint的事件Chart控制并在其上绘制一个矩形。要根据 x 轴和 y 轴值获取矩形的坐标,您可以使用ValueToPixelPosition轴的方法。例如:

void chart1_Paint(object sender, PaintEventArgs e)
{
    var l = (float)chart1.ChartAreas[0].AxisX.ValueToPixelPosition(3.7);
    var t = (float)chart1.ChartAreas[0].AxisY.ValueToPixelPosition(45);
    var r = (float)chart1.ChartAreas[0].AxisX.ValueToPixelPosition(7.2);
    var b = (float)chart1.ChartAreas[0].AxisY.ValueToPixelPosition(31);
    var rect = RectangleF.FromLTRB(l, t, r, b);
    using (var br = new SolidBrush(Color.FromArgb(100,Color.Blue)))
        e.Graphics.FillRectangle(br, rect.X, rect.Y, rect.Width, rect.Height);
    e.Graphics.DrawRectangle(Pens.Red, rect.X, rect.Y, rect.Width, rect.Height);
}

以上值只是用于测试的随机值,您应该使用 x 轴和 y 轴的实际值:

  • l:矩形的左侧(从 x 轴)
  • t:矩形的顶部(从 y 轴)
  • r:矩形的右侧(从 x 轴)
  • b:矩形的底部(从 y 轴看)

如果您知道值是 int,则可以将它们转换为int代替float我用它来测试。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Winforms Chart - 在折线图上绘制允许的区域 的相关文章

随机推荐

  • 适合快速获取和快速删除的java集合

    我想知道是否有一个合适的java接口用于 快速 获取 按索引 和 快速 删除 我所说的 快 是指比O n 编辑 get 方法仅用于从集合中随机选择一个元素 另外 标题应该说 集合 而不是 界面 平衡二叉搜索树具有 O log n 的 获取
  • 为什么我们应该在 jQuery 中使用匿名函数而不是直接使用函数?

    一些 jQuery 方法需要一个函数作为参数 但为了工作 它们应该接收一个匿名函数作为参数 而不是直接接收函数 如下例所示 a on click function retornaNada 而不是 a on click retornaNada
  • 如何使用方法更改类属性?

    我有一个 Django 模型类 它有一些默认属性 我想更改complete通过调用函数来改变变量 class Foo complete False def set complete true complete True 但打电话后set c
  • C++ 使用命名空间来避免长路径

    我仍在学习 C 之前从未真正创建过自己的命名空间 我正在对它们进行试验 虽然我已经完成了大部分工作 但有一件事我似乎仍然无法做到 我希望能够在类中调用静态方法 而无需输入类似的内容NameOfClass method 我认为代码应该如下所示
  • 如何在控制台应用程序中创建可终止的 while 循环?

    我目前正在寻找此 c 控制台应用程序功能的解决方案 我尝试寻找一种创建 while 循环的方法 该循环可以终止下面的代码 但我只得出与中断 while 循环相关的结果或不将其放入 while 循环的解决方案 int P1Choice int
  • Reactjs 中的扩展语法“...this.props”感觉很奇怪

    使用扩展运算符与诸如此类的对象发生反应propsJSX 中似乎没有输出我所期望的内容
  • 云代码:从 URL 创建 Parse.File

    我正在开发一个云代码函数 它使用 facebook graph API 来检索用户的个人资料图片 因此 我可以访问正确的图片 URL 但无法从该 URL 创建 Parse File 这几乎就是我正在尝试的 Parse Cloud httpR
  • 检查一个数据框中的单词是否出现在另一个数据框中(python 3,pandas)

    问题 我有两个数据框 想要删除它们之间的任何重复项 部分重复项 DF1 DF2 Phrases Phrases Little Red Little Red Corvette Grow Your Grow Your Beans James B
  • vm.dirty_ratio 和 vm.dirty_background_ratio 之间的区别?

    我目前正在试验中找到的内核参数 proc sys vm 尤其dirty ratio and dirty background ratio 内核文档对两者都有以下解释 脏背景比例 包含 以包含空闲页面的总可用内存的百分比表示 和可回收页 后台
  • GCC 4.7 字符串文字的源字符编码和执行字符编码?

    Linux x86 64 上的 GCC 4 7 是否具有默认字符编码 用于验证和解码 C 源文件中字符串文字的内容 这是可配置的吗 此外 当将字符串数据从字符串文字链接到输出的数据部分时 它是否具有默认的执行字符编码 这是可配置的吗 在任何
  • Excel VBA 将工作表保存到具有唯一名称的多个文件夹

    感谢您的所有意见 下面的代码是收到的输入的最终结果 我已经对这些错误进行了评论 这些错误直接关系到保存到数组中定义的文件夹中的总体预期结果 Option Explicit Public EngName As String TeamNum A
  • kubernetes nginx ingress 无法将 HTTP 重定向到 HTTPS

    我有一个托管在 Google Cloud 平台中的网络应用程序 该应用程序位于负载均衡器后面 而负载均衡器本身位于入口后面 入口设置了 SSL 证书 并按预期接受 HTTPS 连接 但有一个问题 我无法让它将非 HTTPS 连接重定向到 H
  • 如何在 Android 中使用 KSoap 2

    我刚刚发现 ksoap2 在 Android 应用程序中使用我自己的 asp net Web 服务 我在互联网上发现了一些很棒的资源 并且我已经在 Android 应用程序中实现了我的网络服务 以下是我使用的网络服务的响应 HTTP 1 1
  • 如何在 R 中将 dd/mm/yy 转换为 yyyy-mm-dd

    我有一个向量 其日期值采用这种格式 dd mm yy 例如 27 06 16 我想将其转换为 yyyy mm dd 格式 例如 2016 06 27 以进行逻辑比较 我正在使用这个表达 as Date as character 27 06
  • 类运算符

    我在编写代码时遇到问题 void main Matrix c rows cols rows cols are int numbers c 0 0 2 the line that I m having a problem to do the
  • 有没有办法让 LaTeX 将图形放置在同一页面中作为对该图形的引用?

    我正在使用 LaTeX 和图形环境 我非常熟悉该环境的参数 htbp 而且我通常也熟悉 LaTeX 默认情况下决定将每个图形放在哪里的策略 例如 将图形放置在页面的顶部或底部 我想知道是否有一个包 宏或一些我可以提供的命令 这样如果我有一个
  • 替换javascript中的换行符

    我正在尝试替换实例 r or n我的 json 对象中的字符 br 用于在网站上显示 I tried myString myString replace r n br 但这似乎并没有什么作用 当我用其他东西替换正则表达式时 例如 a 例如
  • R:用不同的颜色将一个 ECDF 绘制在另一个 ECDF 之上

    我有几个累积经验密度函数 我想将它们绘制在彼此之上 以说明两条曲线的差异 正如所指出的在上一个问题中 https i stack imgur com V7fIq png 绘制 ECDF 的函数很简单plot Ecdf 当我阅读精美的手册页时
  • 是否有不是完整网站的卡片/目录应用程序?

    我遇到的每个解决方案似乎都是一个完整的商店 有太多的选项和太多的功能 我可以编写自己的购物车来从前端获得我需要的最小功能 我只是想减少编写复杂后端的时间 我真正想要的是提供产品目录 订单管理等后端功能 同时提供流畅一致的 API 来访问完全
  • Winforms Chart - 在折线图上绘制允许的区域

    如何在图表上绘制灰色区域 信号的允许范围 我使用 Winforms 和标准 MicrosoftSystem Windows Forms DataVisualization类 它应该是自定义范围 这意味着起始 Y 点不能仅为零 我在运行时在线