Bu kodu vardır:Son 10 DataPoints, her saniye güncellenen bir grafikte nasıl görüntülenir?
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();
}
kodumu bu bölümü ben bir grafik çizmek zamanlayıcı kene olaydır ve ben noktaları sayımı (MAX_POINTS ulaştığında her tick.I noktaları ekleyebilir ve bunu güncellemeniz gerekir 10) İlk noktayı kaldırır ve sonunda yeni bir tane ekler.
Sorun, MAX_POINTS'a ulaştığında en sonunda noktaları kaldırmaya başlar ve grafik otomatik olarak gezinmez. Tüm noktalar silinir ve yeni noktalar eklenmez.
Lütfen bana yardım edin ve dediğim gibi çalışmam için grafiğimi değiştirmek istediğimi söyle.
DÜZEN 1: Windows Forms kullanıyorum.
DÜZENLEME 2: AddXY ve RemoveAt, puan koleksiyonundan değiller.
DÜZENLEME 3: Ayrıca bir "kapsam" a sahip olmak ve son saat ya da son hafta ya da son ay için verileri görmek istiyorum.
DÜZENLEME 4: Biraz, şimdi son saate noktaları göstermek için grafiği ölçeklemek istiyorum soruma/gün
Bu, WinForms veya WPF kullanıyor mu? WPF'de DataBinding'i bir ObservableCollection'a kullanabilir ve daha sonra UI'yi (sadece koleksiyon) güncellemek için endişelenmenize gerek yoktur. –
Koleksiyon/Liste sınıfının kendi uygulamanıza sahip olup olmadığını merak ediyorum. Ya da AddXY() ile birlikte kendi uygulamanızdır? – sll
@sllev onlar puan koleksiyonundan ve varsayılan grafik serisi adn puan sınıfları için hiçbir şey değiştirmedim. – Bosak