私はこのコードを持っている:1秒ごとに更新されているグラフの最後の10個のデータポイントを表示する方法はありますか?
private void timer_Tick(object sender, EventArgs e)
{
timer.Stop();
for (int i = 0; i < TOTAL_SENSORS; i++)
{
DateTime d = DateTime.Now;
devices[i].Value = float.Parse(serialPort.ReadLine());
if (chart1.Series[i].Points.Count > MAX_POINTS)
{
//see the most recent points
}
chart1.Series[i].Points.AddXY(d, devices[i].Value);
}
timer.Start();
}
私のコードのこの部分は、私はチャートを描くタイマーのTickイベントであると私はポイント数がMAX_POINTSを(達したときにポイントを追加し続けると、すべてのtick.Iそれを更新する必要があります10)最初のポイントを削除し、最後にを追加します。
問題はMAX_POINTSに達し、最後にポイントの削除を開始し、グラフが自動スクロールしないことです。すべてのポイントが削除され、新しいポイントが追加されません。
私が助けて、私が言ったようにチャートを変更する必要があると言ってください。
編集1:私はWindowsフォームを使用しています。
EDIT 2:AddXYとRemoveAtはポイントコレクションのものではありません。
編集3:「範囲」を持って、過去1時間、最後の1週間、または最後の1ヶ月のデータを確認する方法も知りたい。
EDIT 4:私は少し、私は今、最後の時間からのポイントを表示するには、チャートを拡大したい私の質問/日
これはWinFormsまたはWPFを使用していますか? WPFでは、ObservableCollectionにDataBindingを使用できます。したがって、UI(コレクションのみ)の更新について心配する必要はありません。 –
Collection/Listクラスを自分で実装しているかどうかは分かりますか?またはRemoveAtは、AddXY()とともに独自の実装ですか? – sll
@sllev彼らはポイントコレクションからのもので、私はデフォルトチャートシリーズadnポイントクラスに何も変更していません。 – Bosak