C#.NET MSCHART 实现数据监控并自动滚动

/// <summary>
/// 初始化图表
/// </summary>
        private void InitChartView()
        {
            //滚动条
            ChartView.ChartAreas["Default"].AxisX.ScrollBar.Size = 20;
            ChartView.ChartAreas["Default"].AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll;
            ChartView.ChartAreas["Default"].AxisX.ScrollBar.IsPositionedInside = false;
            ChartView.ChartAreas["Default"].AxisX.ScrollBar.BackColor = Color.White;
            ChartView.ChartAreas["Default"].AxisX.ScrollBar.LineColor = Color.Black;
            ChartView.ChartAreas["Default"].AxisX.ScrollBar.ButtonColor = Color.FromArgb(224, 224, 224);
            ChartView.ChartAreas["Default"].AxisX.ScaleView.Size = 40;//可视区域数据点数
            ChartView.ChartAreas["Default"].AxisX.ScrollBar.IsPositionedInside = true;
            ChartView.ChartAreas["Default"].AxisY.Maximum = 200;
            ChartView.ChartAreas["Default"].AxisX.Minimum = 1;//X轴起始点

            Series IniSeries = ChartView.Series.Add("SeriesD56");
            IniSeries.ChartArea = "Default";
            IniSeries.ChartType = SeriesChartType.Spline;//曲线类型
            IniSeries.BorderWidth = 2;//曲线宽度
            IniSeries.Color = Color.Red;//曲线颜色
            IniSeries.IsValueShownAsLabel = true;//曲线数据点值是否显示
            IniSeries.XValueType = ChartValueType.DateTime;//曲线X轴数据类型

            IniSeries = ChartView.Series.Add("SeriesD58");
            IniSeries.ChartArea = "Default";
            IniSeries.ChartType = SeriesChartType.Spline;
            IniSeries.BorderWidth = 2;
            IniSeries.Color = Color.FromArgb(255, 128, 0);
            IniSeries.IsValueShownAsLabel = true;
            IniSeries.XValueType = ChartValueType.DateTime;
        }



需要定义一个全局变量(因为可能有多个数据视图,可能多个视图的数据量不一样,所以这里以最大数据点数的为比较值)

private int NowChartPointsCount=0;//记录当前已添加的数据点个数

实时添加监控数据点

NowChartPointsCount++;

ChartView.Series["SeriesD56"].Points.AddXY(MTestLog.AddTime.ToString("yyyy/MM/dd HH:mm:ss"),Convert.ToDouble(MTestLog.D56));

自动滚动到最后面的数据点

if (NowChartPointsCount > ChartView.ChartAreas["Default"].AxisX.ScaleView.Size)
 {
          ChartView.ChartAreas["Default"].AxisX.ScaleView.Position = NowChartPointsCount - ChartView.ChartAreas["Default"].AxisX.ScaleView.Size;
  }


你可能感兴趣的:(C#.NET MSCHART 实现数据监控并自动滚动)