繁体   English   中英

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

[英]C# Charting zoom problem with DataTime for X axis

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

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

在垂直方面,一切仍然表现得很好,但是当我可以放大X轴时,我无法拖动滑动条移动到我放大的位置。 但是,我可以点击任意一侧,它会跳跃。

有谁知道如何解决这个问题并使其表现得像浮点值一样?

谢谢!

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

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

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

        _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;

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

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

我的解决方案是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM