2012-10-11 38 views
1

我正在做一個趨勢的應用程序與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軸上使用雙打。

回答

1

看起來這是行爲設計​​:只有DateTime類型軸值允許我的圖表順利滾動。

0

可以手動基於所述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