C#.NET MSCHARTはデータ監視と自動スクロールを実現
2694 ワード
/// <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; }