如何真正滚动和缩放MS Chart控件?

问题描述:

我正在做一个趋势的应用程序与MS图表控件4.如何真正滚动和缩放MS Chart控件?

我集成了缩放和滚动鼠标滚轮和右按钮,这使控制异常平滑。

不过,我认为relealize的方法ChartArea.Axis和ScaleView.ScrollScaleView.Zoom实际上不缩小,也不滚动电网,标签和带状线。

相反,它放大并滚动点系列,但保持网格标签原样,只调整标签值。

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

enter image description here

我有这个。

enter image description here

基本上,这是我想达到的目标:

enter image description here

我怎样才能做到真正的滚动,并与MS图表控件缩放?

编辑:我设法得到想要的行为,将X值设置为DateTimes。不过,我想在X轴上使用双打。

看起来这是行为设计​​:只有DateTime类型轴值允许我的图表顺利滚动。

可以手动基于所述ScaleView.Position

调用此代码每当图表被更新(例如在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; 
} 
调整IntervalOffset