【问题标题】:.Net Chart Control Auto Scroll/Disable Auto Scale.Net 图表控制自动滚动/禁用自动缩放
【发布时间】:2013-12-31 16:56:12
【问题描述】:

我目前正在构建一个绘制流数据图形的应用程序。我可以很好地接收数据点并将其添加到图表中,但是在添加每个点之后,图表会更改其比例以自动包含所有数据点(即,随着添加更多点,这些点会越来越靠近)。如何关闭此功能?

理想情况下,我希望图表简单地沿 x 轴滚动,而不是在每次添加点时设置比例。最好的方法是什么?

这是我用于在数据到达串行端口时添加数据点的代码:

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

该图只是一个默认的快速线图。以下是随着时间的推移绘制数据的图表的屏幕截图。正如你所看到的,它只是随着时间的推移压缩图表,而不是只留下比例尺并向右滚动。

【问题讨论】:

  • 你找到这个仪表的解决方案了吗?

标签: .net scroll charts


【解决方案1】:

这将禁用自动缩放:

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

【讨论】:

  • 这不起作用。问题在于 x 轴上的压缩。我找到了一个解决方案,但我认为它并不那么优雅。随着数据点被添加到图表中,x 轴最大值和最小值之间的差被计算出来,如果它高于某个值,则最小值增加,从而滚动图表。 if ((chart1.ChartAreas[0].AxisX.Maximum - chart1.ChartAreas[0].AxisX.Minimum) > 20) { chart1.ChartAreas[0].AxisX.Minimum++; }
【解决方案2】:

我是通过以下方式完成的:

Edit 是一个模拟,它在每个计时器刻度上添加点,最小值和最大值递增,因此显示的部分递增,因此出现滚动效果。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 2013-02-19
    • 2010-11-11
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多