我正在使用MS Chart控件4进行趋势分析。
我使用鼠标滚轮和右按钮集成了缩放和滚动功能,使控件具有不寻常的平滑度。
但是,我重新确认了 ChartArea.Axis方法ScaleView.Scroll
和ScaleView.Zoom
实际上不会缩放或滚动网格,标签和带状线。
相反,它会缩放和滚动点系列,但保持网格标签不变,只调整标签值。
例如,如果我想将此示例图表向右滚动:
我有这个。
基本上,这就是我想要实现的目标:
如何使用MS Chart控件实现真正的滚动和缩放?
编辑:我设法通过将X值设置为DateTimes来获得想要的行为。但是,我想在X轴上使用双打。
答案 0 :(得分:1)
似乎这种行为是设计的:只有DateTime类型的轴值允许我的图表顺利滚动。
答案 1 :(得分:1)
您可以根据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;
}