1

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

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

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

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

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

在此处输入图像描述

我有这个。

在此处输入图像描述

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

在此处输入图像描述

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

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

4

2 回答 2

1

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

于 2012-11-21T09:56:54.870 回答
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;
}
于 2015-02-25T19:00:31.950 回答