向MS Chart控件添加滚动条C#

时间:2011-02-28 11:02:08

标签: c# winforms mschart

请理解我知道有关于这个问题的其他线索,但我的需求是不同的。

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

.Size = ...

.View = ...

但是,这会使滚动条自动显示,此滚动条包含一个按钮,单击该按钮会导致条形图消失,使图表显示所有数据,无法重新启动滚动条到图表应用程序。

所以我问,请问,有没有办法在我的图表的X轴上包含一个水平滚动条?我需要这样我才能在100秒块的块上查看我的图表数据。

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

先谢谢你们!!!!!我在C#编码也是

3 个答案:

答案 0 :(得分:24)

以下是您需要的示例:
 (尝试一下,只需创建一个表单,添加一个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;
}

<强>快照:

mschart zooming

答案 1 :(得分:0)

我会这样:

0.5f
0.12345
0.2f
1.04
0.3f
2.045
0.1f
2.0

因此,当您添加的点多于比例视图时-会出现滚动条

答案 2 :(得分:0)

我为此制定了自己的方式。希望它对您有帮助:

  1. 将图表添加到面板中。

  2. 使用panelName.AutoScroll=true;

    将面板的AutoScroll属性设置为true
  3. 在面板中正确调整图表大小。

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

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

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