折线图图形警报

时间:2015-08-05 16:38:15

标签: c# winforms mschart

我目前在C#程序中有一个折线图,我有一个min和max变量。如果任何图形超过最大值,或低于最小值,是否有任何内置的方式在图形上显示(例如点上的点)限制通过,并显示该值的x / y值点?

int max = 2000;
int min = 2000;

for (int i = 0; i < dgvLoadedValues.RowCount - 1; i++)
{
   DateTime x = Convert.ToDateTime(dgvLoadedValues.Rows[i].Cells[0].Value.ToString());

   try
   {
      float y = float.Parse(dgvLoadedValues.Rows[i].Cells[e.ColumnIndex].Value.ToString());
      chart1.Series["Series1"].Points.AddXY(x, y);
   }
   catch
   {
      Console.WriteLine("Unable to plot point");
   }
}

上面的代码只显示从datagridview获取的值并将其显示为折线图

谢谢

1 个答案:

答案 0 :(得分:1)

不幸的是,似乎没有办法定义这样的自动警报。

但正如您所知,只要添加或绑定了DataPoints,您就可以在必要时设置Marker

这是一个循环,它可以一次性完成它,但当然你也可以在添加点时设置标记..:

foreach (DataPoint dp in chart1.Series[0].Points)
{
    if (dp.YValues[0] < max && dp.YValues[0] > min ) continue;
    dp.MarkerStyle = MarkerStyle.Circle;
    dp.MarkerColor = Color.Red;
}

或者在你的情况下:

try
{
   float y = float.Parse(dgvLoadedValues.Rows[i].Cells[e.ColumnIndex].Value.ToString());
   int i = chart1.Series["Series1"].Points.AddXY(x, y);
   if (y < min || y > max)
   {
      chart1.Series["Series1"].Points[i].MarkerStyle = MarkerStyle.Circle;
      chart1.Series["Series1"].Points[i].MarkerColor = Color.Red;
   }       
}

要清除标记,您可以设置其MarkerStyle = MarkerStyle.None

当然你可以很容易地给出最小和最大点不同的颜色..

以下是简单圆圈样式的示例,但还有其他一些包括图片..:

enter image description here

要在标签中添加值,请使用format,如下所示:

dp.Label = "(#VALX{0.0} / #VAL{0.0})" ;