【问题标题】:How to solve scrolling size for MSchart controls graph c#如何解决 MSchart 控件图形 c# 的滚动大小
【发布时间】:2011-05-13 17:05:49
【问题描述】:

我使用 MSChart 制作了一个图表,并且能够实现缩放功能。

图表可以缩放,但是当我想在缩放后四处移动时会出现问题。当我在 y 轴滚动条上上下单击时,滚动增量很好。但是,对于 x 轴滚动条,滚动增量是可怕的。即使中间有数据,它也会一直走到最后。

我尝试在网上寻找解决方案,但不走运

这是我的代码:

        // Chart area (where the axes and series are plotted)
        ChartArea chartArea = new ChartArea();
        chartArea.AxisX.Minimum = DateTime.MinValue.ToOADate();
        chartArea.AxisY.Minimum = 0;
        chartArea.AxisY.Maximum = 100;
        //chartArea.AxisY.IntervalAutoMode = IntervalAutoMode.VariableCount;
        chartArea.AxisX.Title = "Time";
        chartArea.AxisX.LabelStyle.Format = DEFAULT_TIME_FORMAT_STRING;
        chartArea.AxisY.LabelStyle.Format = "#########################";
        chartArea.AxisX.MajorGrid.LineDashStyle = ChartDashStyle.NotSet;
        chartArea.AxisY.MajorGrid.LineDashStyle = ChartDashStyle.NotSet;
        chartArea.BackColor = Color.Transparent;

        m_chart.ChartAreas.Add(chartArea);

        //add zoom-in features for x and y axis             
        m_chart.ChartAreas[0].CursorY.Interval = 0;
        m_chart.ChartAreas[0].CursorY.IsUserEnabled = true;
        m_chart.ChartAreas[0].CursorY.IsUserSelectionEnabled = true;
        m_chart.ChartAreas[0].AxisY.ScaleView.Zoomable = true;
        m_chart.ChartAreas[0].AxisY.ScrollBar.IsPositionedInside = true;

        m_chart.ChartAreas[0].CursorX.Interval = 0;
        //m_chart.ChartAreas[0].CursorX.AutoScroll = true;
        //m_chart.ChartAreas[0].AxisX.IntervalAutoMode = IntervalAutoMode.VariableCount;
        m_chart.ChartAreas[0].CursorX.IsUserEnabled = true;
        m_chart.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
        m_chart.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
        m_chart.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = true; 

我看不出我做错了什么

【问题讨论】:

  • 我想澄清 x 轴的滚动行为。当数据大部分在图表的左侧时,当我点击滚动条上的右键时,它会走到图表的最末端,你看不到图表的中间(这是缩放后) .
  • 所以我想通了。由于图表是稀疏的,它只会移动到重要的数据区域......除非你改变 smallScrollSize。所以我所做的是这个 m_chart.ChartAreas[0].AxisX.ScaleView.SmallScrollSize = (m_chart.ChartAreas[0].AxisX.Maximum - m_chart.ChartAreas[0].AxisX.Minimum)/60;

标签: scroll zooming mschart


【解决方案1】:

将比例视图类型设置为适当的时间选择。

m_chart.ChartAreas[0].AxisX.ScaleView.SizeType = "Seconds";
m_chart.ChartAreas[0].AxisX.ScaleView.MinSizeType= "Seconds";
m_chart.ChartAreas[0].AxisX.ScaleView.SmallScrollMinSizeType= "Seconds";
m_chart.ChartAreas[0].AxisX.ScaleView.SmallScrollSizeType= "Seconds";

【讨论】:

    【解决方案2】:

    改变一下

    m_chart.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = false;
    

    然后滚动条将出现在图表区域之外,您将不会遇到这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多