如何真正滚动和缩放MS Chart控件?
问题描述:
我正在做一个趋势的应用程序与MS图表控件4.如何真正滚动和缩放MS Chart控件?
我集成了缩放和滚动鼠标滚轮和右按钮,这使控制异常平滑。
不过,我认为relealize的方法ChartArea.Axis和ScaleView.Scroll
ScaleView.Zoom
实际上不缩小,也不滚动电网,标签和带状线。
相反,它放大并滚动点系列,但保持网格标签原样,只调整标签值。
例如,如果我想滚动此示例右图:
我有这个。
基本上,这是我想达到的目标:
我怎样才能做到真正的滚动,并与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