Przesuwanie wykresu real time po skasowaniu punktu

Odpowiedz Nowy wątek
2018-11-16 06:54
0

Dzien dobry,

Napotkalem problem z przesowaniem wykresu i nie berdzo wiem jak ruszyc dalej.
Na wykresie rejestruje wartosci z czujnika.w real time. Do testow symuluje otrzymanie nowych wartosci za pomoca timera.
Nowy punkt pojawia sie po prawej stronie I wykres jest przesowany w lewo.
Wszystko dobrze dziala, dopoki nie zaczne kasowac pierwszego punktu w serii, jak seriia osisagnie limit (100 punktow).
Program dziala, dane sa dodawane i kasowane w serii, ale wykres przestaje sie przesuwac ;(. Odswieza sie bo pierwszy punkt znika,
Jak wykasuje za pomoca "buttona1" punkty ponizej limitu (100) to wykres znow sie przesuwa,
Ponizej kod.

private void SimulationTimer1_Tick(object sender, EventArgs e)
        {
            int actval = 0;

            if (true)
            {
                if (SeriesData1.Points.Count > 100)
                {
                    SeriesData1.Points.RemoveAt(0);
                    //chart1.Update();
                }
                prev = (SeriesData1.Points.Count == 0) ? 50: (int)SeriesData1.Points[SeriesData1.Points.Count - 1].YValues[0];
                actval = prev + tmpval.Next(-4, 6);
                if (actval > 100) { actval = 100; }
                if (actval < 0) { actval = 0; }
                //prev = actval;
                SeriesData1.Points.AddXY(DateTime.Now, actval);

                lblViewLength.Text = SeriesData1.Points.Count.ToString();
                // shift chart 
                chart1.ChartAreas[0].AxisX.ScaleView.Zoom(DateTime.Now.AddSeconds(-60).ToOADate(), ChartLength, DateTimeIntervalType.Seconds);              
            }

        }

 private void button1_Click(object sender, EventArgs e)
        {
            SeriesData1.Points.RemoveAt(0);
        }
edytowany 1x, ostatnio: Usjwo, 2018-11-16 06:57

Pozostało 580 znaków

2018-11-21 04:35
0

Sprawa rozwiazana. Po usunieciu punktu trzeba zrobic chart1.Refresh(), nie update

if (SeriesData1.Points.Count > 100)
                {
                    SeriesData1.Points.RemoveAt(0);
                    chart1.Refresh();
                }

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0