C#图表缩放问题,X轴使用DataTime数据类型的解决方法

5
使用MS Charting for .NET,我正在尝试缩放我创建的图表。对于Y轴(类型=float)和X轴(类型=int),这个功能可以正常工作。但是当X轴上的值为日期时间类型时,滚动条的行为并不像在该轴上使用浮点数类型时那样正常。
垂直方向上,一切仍然正常,但是虽然我可以缩放X轴,但我无法拖动滑动条来移动缩放区域。但是,我可以单击任意一侧使其跳转。
有谁知道如何解决这个问题,并使它像使用浮点数类型时那样正常工作吗?
谢谢!
4个回答

9
根据您的数据,尝试将图表区域的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";

谢谢回复,但还是不起作用。不过,我之前没有接触过ScaleView,所以我会仔细研究一下,看看它是否能为我提供任何线索。 - Mark
非常首先的帮助:将其设置为分钟解决了。 - nerijus

0

添加

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

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;

尤其是最后两行完成了这项工作。


0

我的解决方案是:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接