using System; public class Test { public Form1() { InitializeComponent(); } private int PintChartX_Max = 5; // X軸の秒数 System.Windows.Forms.Timer st; // フォームタイマー int PintTimerCount; // カウント数(秒数) private List Plst_ChartTime; // 時間配列 private DateTime PdtStart; // 開始時間 private void Form1_Load(object sender, EventArgs e) { // グラフ初期化 chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine; // 線グラフ chart1.ChartAreas[0].AxisX.LabelStyle.Format = "HH:mm:ss"; chart1.ChartAreas[0].AxisX.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Seconds; chart1.ChartAreas[0].AxisX.Interval = 1.0; // Seriesも変更 chart1.Series[0].XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.Time; PintTimerCount = 0; Plst_ChartTime = new List(); PdtStart = new DateTime(); // 1秒毎に描画 st = new Timer(); st.Tick += new EventHandler(subTimer); st.Interval = 1000; st.Start(); } // タイマーで使用される関数 private void subTimer(object sender,EventArgs e) { // 毎回初期化 chart1.Series[0].Points.Clear(); chart1.Series[0].Points.AddXY(0.0, double.NaN); // X軸を動かす DateTime dtMin,dtMax; dtMin = new DateTime(); dtMax = new DateTime(); if (PintChartX_Max > PintTimerCount) { dtMax = dtMax.AddSeconds(PintChartX_Max); } else { dtMin = dtMin.AddSeconds(PintTimerCount - PintChartX_Max); dtMax = dtMax.AddSeconds(PintTimerCount); } chart1.ChartAreas[0].AxisX.Minimum = dtMin.ToOADate(); //chart1.ChartAreas[0].AxisX.Maximum = dtMax.ToOADate(); chart1.ChartAreas[0].AxisX.Maximum = dtMax.AddMilliseconds(100).ToOADate(); // ← 時間を加算することで、枠が安定する chart1.ChartAreas[0].AxisY.Minimum = -1.0; // Y軸の最小値 ← ???動く??? chart1.ChartAreas[0].AxisY.Maximum = 3.0; // Y軸の最大値 // チャート描画(仮:0秒と最新秒を繋ぐだけの1本線) Plst_ChartTime.Add(PdtStart.AddSeconds(PintTimerCount)); chart1.Series[0].Points.AddXY(Plst_ChartTime[PintTimerCount], 2.2); PintTimerCount++; } }