【问题标题】:How to really scroll and zoom a MS Chart controls?如何真正滚动和缩放 MS 图表控件?
【发布时间】:2012-10-11 10:27:43
【问题描述】:

我正在使用 MS Chart 控件 4 做一个趋势应用程序。

我将缩放和滚动与鼠标滚轮和右键集成在一起,这使控件具有非同寻常的流畅度。

但是,我意识到 ChartArea.Axis 方法 ScaleView.ScrollScaleView.Zoom 实际上不会缩放或滚动网格、标签和带状线。

相反,它缩放和滚动点系列,但保持网格标签不变,并且只调整标签值。

例如,如果我想将此示例图表向右滚动:

我有这个。

基本上,这就是我想要实现的目标:

如何使用 MS Chart 控件实现真正的滚动和缩放?

编辑:我设法通过将 X 值设置为 DateTimes 来获得想要的行为。但是,我想在 X 轴上使用双精度。

【问题讨论】:

    标签: .net scroll mschart zooming dundas


    【解决方案1】:

    似乎这种行为是设计使然:只有 DateTime 类型的轴值允许我的图表平滑滚动。

    【讨论】:

      【解决方案2】:

      您可以根据ScaleView.Position手动调整IntervalOffset

      每当图表更新时调用此代码(例如在 AxisViewChanged 和 AxisScrollBarClicked 事件上)

      if (chart1.ChartAreas[0].AxisY.ScaleView.IsZoomed)
      {
          double offset = chart1.ChartAreas[0].AxisY.Minimum - chart1.ChartAreas[0].AxisY.ScaleView.Position;
      
          chart1.ChartAreas[0].AxisY.LabelStyle.IntervalOffset = offset;
          chart1.ChartAreas[0].AxisY.MajorGrid.IntervalOffset = offset;
          chart1.ChartAreas[0].AxisY.MajorTickMark.IntervalOffset = offset;
          chart1.ChartAreas[0].AxisY.MinorGrid.IntervalOffset = offset;
          chart1.ChartAreas[0].AxisY.MinorTickMark.IntervalOffset = offset;
      }
      else
      {
          chart1.ChartAreas[0].AxisY.LabelStyle.IntervalOffset = 0;
          chart1.ChartAreas[0].AxisY.MajorGrid.IntervalOffset = 0;
          chart1.ChartAreas[0].AxisY.MajorTickMark.IntervalOffset = 0;
          chart1.ChartAreas[0].AxisY.MinorGrid.IntervalOffset = 0;
          chart1.ChartAreas[0].AxisY.MinorTickMark.IntervalOffset = 0;
      }
      

      【讨论】:

        猜你喜欢
        • 2011-01-17
        • 1970-01-01
        • 1970-01-01
        • 2019-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-08
        • 1970-01-01
        相关资源
        最近更新 更多