.Net图表控制自动滚动/禁用自动缩放

时间:2011-05-19 15:58:07

标签: .net scroll charts

我目前正在构建一个绘制流数据图表的应用程序。我可以很好地接收和添加数据点到图表,但是在添加每个点之后,图形会改变其比例以自动包括所有数据点(即,随着添加更多点,点越来越近)。我怎么能关掉这个?

理想情况下,我希望图表只需沿x轴滚动,而不是每次添加点时设置比例。这样做的最佳方式是什么?

以下是我用于在数据到达串口时添加数据点的代码:

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

图表只是默认的快速线图。以下是绘制数据随时间变化的图表的屏幕截图。正如您所看到的,它只是随着时间的推移压缩图形而不是仅仅保留刻度并向右滚动。 After a few seconds After a few more seconds

2 个答案:

答案 0 :(得分:1)

这将禁用自动缩放:

chart1.ChartAreas[0].AxisY.ScaleBreakStyle.Enabled = false;
chart1.ChartAreas[0].AxisY.Maximum = 0.3;
chart1.ChartAreas[0].AxisY.Minimum = -0.3;

答案 1 :(得分:0)

我是按照以下方式完成的:

编辑是一个模拟,它在每个计时器上添加点,最小值和最大值递增,因此显示的部分会增加,因此会产生滚动效果。

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;
}