using System;
public class Test
{
public Form1()
{
InitializeComponent();
}
private int PintChartX_Max = 5; // X軸の秒数
System.Windows.Forms.Timer st; // フォームタイマー
int PintTimerCount; // カウント数(秒数)
private List<DateTime> 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<DateTime>();
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++;
}
}