C#使用DataTime for X轴绘制缩放问题

时间:2011-01-13 08:10:40

标签: c# datetime zoom charts

使用MS Charting for .NET,我试图放大我创建的图表。

这在Y轴(type = float)和X轴(如果type = int)上工作正常,但是当我在X轴上有DateTime值时,滚动的行为不应该在此轴上。

垂直地,一切仍然表现正常,但是当我可以放大X轴时,我无法拖动滑动条移动到我放大的位置。但是,我可以单击任意一侧,它会跳转。

有没有人知道如何修复此问题并使其行为与浮点值一样?

谢谢!

4 个答案:

答案 0 :(得分:8)

根据您的数据,尝试将图表区域的CursorX.IntervalType属性设置为Auto以外的其他属性。

一旦放大,尝试使用滚动条的小滚动箭头时可能会遇到类似的问题。要解决此问题,您可以尝试将图表区域的AxisX.ScaleView.SmallScrollSizeType属性设置为与CursorX.IntervalType

例如,如果您的图表包含每30秒报告一次的数据,则可以使用以下设置:

        chart1.ChartAreas[0].CursorX.IsUserEnabled = true;
        chart1.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
        chart1.ChartAreas[0].CursorX.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Minutes;
        chart1.ChartAreas[0].CursorX.Interval = 0.5D;

        chart1.ChartAreas[0].AxisX.ScaleView.SmallScrollSizeType = DateTimeIntervalType.Minutes;
        chart1.ChartAreas[0].AxisX.ScaleView.SmallScrollSize = 0.5D;
        chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
        chart1.ChartAreas[0].AxisX.LabelStyle.Format = "hh:mm:ss";

答案 1 :(得分:0)

我遇到了同样的问题,这些设置为我解决了这个问题:

        _chart.ChartAreas[0].CursorX.IsUserEnabled = true;
        _chart.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
        _chart.ChartAreas[0].CursorX.IntervalType = DateTimeIntervalType.Minutes;
        _chart.ChartAreas[0].CursorX.Interval = 1D;

        _chart.ChartAreas[0].AxisX.ScaleView.SmallScrollSizeType = DateTimeIntervalType.Minutes;
        _chart.ChartAreas[0].AxisX.ScaleView.SmallScrollSize = 1D;
        _chart.ChartAreas[0].AxisX.ScaleView.Zoomable = true;

        _chart.ChartAreas[0].AxisX.ScaleView.MinSizeType = DateTimeIntervalType.Minutes;
        _chart.ChartAreas[0].AxisX.ScaleView.MinSize = 1D;

        _chart.ChartAreas[0].AxisX.ScaleView.SmallScrollMinSizeType = DateTimeIntervalType.Minutes;
        _chart.ChartAreas[0].AxisX.ScaleView.SmallScrollMinSize = 1D;

特别是最后两行完成了这项工作。

答案 2 :(得分:0)

添加

    chart.ChartAreas[0].AxisX.ScaleView.SmallScrollMinSizeType = DateTimeIntervalType.Seconds;

答案 3 :(得分:0)

我的解决方法是:

chart1.ChartAreas[0].CursorX.IntervalType = DateTimeIntervalType.Milliseconds;