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

更新:

我尝试了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);
}


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

c# - Winforms图表-在折线图上绘制允许区域-LMLPHP

非常感谢!

最佳答案

您可以处理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而不是我用于测试的float

关于c# - Winforms图表-在折线图上绘制允许区域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41263864/

10-09 19:25