.Net Chart Control Auto Scroll / Отключить автоматическое масштабирование - PullRequest
3 голосов
/ 19 мая 2011

В настоящее время я создаю приложение, которое отображает графики потоковых данных.Я могу получать и добавлять точки данных на график просто отлично, но после добавления каждой точки график меняет свою шкалу, чтобы автоматически включать все точки данных (т. Е. Точки сближаются по мере добавления новых).Как я могу отключить это?

В идеале, я бы хотел, чтобы график просто прокручивался вдоль оси x, а не устанавливал масштаб при каждом добавлении точки.Каков наилучший способ сделать это?

Вот код, который я использую для добавления точки данных, когда данные поступают на последовательный порт:

chart1.Series["Series1"].Points.AddY(parsed);

График является просто быстрым по умолчаниюлинейный сюжет.Вот снимки экрана графика, отображающего данные с течением времени.Как видите, он просто сжимает график с течением времени, а не просто оставляет масштаб в одиночестве и прокручивает вправо.After a few seconds After a few more seconds

Ответы [ 2 ]

1 голос
/ 13 июня 2011

Это отключит автоматическое масштабирование:

chart1.ChartAreas[0].AxisY.ScaleBreakStyle.Enabled = false;
chart1.ChartAreas[0].AxisY.Maximum = 0.3;
chart1.ChartAreas[0].AxisY.Minimum = -0.3;
0 голосов
/ 31 декабря 2013

Я сделал это следующим образом:

Правка - это макет, который добавляет точки на каждый таймер, минимальное и максимальное значения увеличиваются, поэтому показанная часть увеличивается, и возникает эффект прокрутки.

private void mockTimerTick(object sender, EventArgs e)
{
        int i;

        if (isRunning)
            return;

        lock (_syncObj)
        {
            isRunning = true;
            for (i = currentOffset; i < samplesPerSegment + currentOffset; i++)
            {
                _series.Points.AddXY(mockPoints[i].X, mockPoints[i].Y);

                if (i >= _chart.ChartAreas["ChartArea1"].AxisX.Maximum)
                {
                    _chart.ChartAreas["ChartArea1"].AxisX.Maximum++;
                    _chart.ChartAreas["ChartArea1"].AxisX.Minimum++;
                    _chart.ChartAreas["ChartArea1"].AxisX.ScaleView.Scroll(_chart.ChartAreas["ChartArea1"].AxisX.Maximum);

                }               
            }
            isRunning = false;
        }

        currentOffset = i;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...