【问题标题】:Adding a scroll bar to MS Chart control C#将滚动条添加到 MS Chart 控件 C#
【发布时间】:2011-02-28 11:02:07
【问题描述】:

请理解,我知道还有其他线程涉及此问题,但我的需求不同。

基本上在我看到人们说要使用 MSChart 实现滚动条之前,他们使用的是

.Size = ...

.View = ...

但是,这会使滚动条自动出现,并且此滚动条包含一个按钮,单击该按钮会导致滚动条消失,使图表显示所有数据,并且在不重新启动的情况下无法将滚动条带回图表应用程序。

所以请问,有没有办法在我的图表的 X 轴上加入水平滚动条?我需要这样才能查看以 100 秒为单位的图表数据。

即0 - 100,然后单击滚动条将带我到 100 - 200 块。

先谢谢各位了!!!!!!我也用 C# 编码

【问题讨论】:

    标签: c# winforms mschart


    【解决方案1】:

    以下是您需要的示例:
    (要试试看,只需创建一个表单,添加一个 mschart 并调用以下方法)

    private void FillChart()
    {
        int blockSize = 100;
    
        // generates random data (i.e. 30 * blockSize random numbers)
        Random rand = new Random();
        var valuesArray = Enumerable.Range(0, blockSize * 30).Select(x => rand.Next(1, 10)).ToArray();
    
        // clear the chart
        chart1.Series.Clear();
    
        // fill the chart
        var series = chart1.Series.Add("My Series");
        series.ChartType = SeriesChartType.Line;
        series.XValueType = ChartValueType.Int32;
        for (int i = 0; i < valuesArray.Length; i++)
            series.Points.AddXY(i, valuesArray[i]);
        var chartArea = chart1.ChartAreas[series.ChartArea];
    
        // set view range to [0,max]
        chartArea.AxisX.Minimum = 0;
        chartArea.AxisX.Maximum = valuesArray.Length;
    
        // enable autoscroll
        chartArea.CursorX.AutoScroll = true;
    
        // let's zoom to [0,blockSize] (e.g. [0,100])
        chartArea.AxisX.ScaleView.Zoomable = true;
        chartArea.AxisX.ScaleView.SizeType = DateTimeIntervalType.Number;
        int position = 0;
        int size = blockSize;
        chartArea.AxisX.ScaleView.Zoom(position, size);
    
        // disable zoom-reset button (only scrollbar's arrows are available)
        chartArea.AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll;
    
        // set scrollbar small change to blockSize (e.g. 100)
        chartArea.AxisX.ScaleView.SmallScrollSize = blockSize;
    }
    

    快照:

    【讨论】:

    • @digEmAll,快照链接坏了。
    • @Devendra:这不是链接,但下面有一张图片......也许你的浏览器没有加载图片......?
    • @digEmAll,图片不可见。我试图检查链接(通过编辑答案),但即使这也是无效的。
    • @digEmAll,快照可见。
    • @digEmAll,该图像可能已被我办公室的防火墙阻止。 :)
    【解决方案2】:

    我会这样做:

        if (series1.Points.Count > 2 && chartArea1.AxisX.Maximum - chartArea1.AxisX.Minimum > chartArea1.AxisX.ScaleView.Size)
    {
       chartArea1.AxisX.ScrollBar.Enabled = true;
    }
    else
    {
       chartArea1.AxisX.ScrollBar.Enabled = false;
    }
    

    因此,当您添加的点数超过 scaleview 时 - 会出现滚动条

    【讨论】:

      【解决方案3】:

      为此,我想出了自己的方法。希望对你有帮助:

      1. 将图表添加到面板。

      2. 使用panelName.AutoScroll=true;将面板的AutoScroll属性设置为true

      3. 在面板中适当调整图表大小。

      4. 您现在可以像使用图表一样使用面板的滚动条!

      5. 如果数据被连续添加(例如,使用计时器左右),请将其添加到计时器的滴答事件中:

        chartName.Size = new Size(width++, height++); 其中int width = chartName.Width;int height = chartName.Height;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-27
        相关资源
        最近更新 更多