【问题标题】:SciChart Realtime zoom with minimum axis range具有最小轴范围的 SciChart 实时缩放
【发布时间】:2016-04-08 20:14:16
【问题描述】:

我有一个 SciChart 图表的 FIFO 实时图表(几乎取自他们发布的示例)。在渲染时,它开始时会完全放大到非常接近的位置,而在绘制线条时,它会缩小以适应线条的完整大小。

        <s:SciChartSurface.XAxis>
            <s:NumericAxis x:Name="axisX" MinHeight="50" AutoRange="Always" AxisTitle="{Binding Path=XAxisTitle}" DrawMinorGridLines="False" DrawMinorTicks="False" TextFormatting="0.##">
                <s:NumericAxis.GrowBy>
                    <s:DoubleRange Max="0.1" Min="0.1" />
                </s:NumericAxis.GrowBy>
            </s:NumericAxis>
        </s:SciChartSurface.XAxis>

但是,我希望它已经开始缩小一定量 - 例如X 轴已经从(例如)0 到 10 显示,并且随着线条的绘制,它会在屏幕上继续前进,只有当线条恰好大于提供的空间时才会缩放。

我已经尝试设置VisibleRangeLimit,但是虽然这确实允许我定义图表区域的范围,但当曲线变得太大时缩放不会启动(因此它实际上会“脱离图表” ")

如何做到这一点?

【问题讨论】:

    标签: c# wpf scichart


    【解决方案1】:

    原因是 Fifo Example in sciChart WPF 使用 XAxis AutoRange set to Always 来缩放轴以适应数据。示例开始时,即使 Fifo 缓冲区的容量为 10,000 个点,但其中没有数据,因此轴被缩小以容纳数据。

    有两种解决方法:

    1. 是用 X=xValue, Y=double.NaN 预填充您的 FIFO DataSeries。给定足够的值,图表会认为它必须绘制所有这些点,因此 XAxis 会相应地缩放

    2. 是自己控制 XAxis.VisibleRange(不要使用 AutoRange)。在这种情况下,您需要将 XAxis.VisibleRange 设置为一个窗口大小以容纳 N 个点,并在更新数据时更新窗口。

    FAQ 'How to create a StripChart in SciChart' 演示了技巧 (2),如何更新 XAxis 的可见范围以实现滚动行为。

    披露,我是 SciChart WPF 团队的技术主管

    【讨论】:

    • 感谢您的信息。我所做的是将AutoRange 绑定到一个从Never 变为Always 的字段,当点数变得足够大以至于我想开始缩放时。这对我有用,但你说“不要使用 AutoRange”。这是为什么呢?
    • 如果您执行上述操作,您可以忽略我的建议“不要使用自动量程”。您的解决方案更加简单和优雅。通过将 Axis.VisibleRange 设置为固定值,使用 AutoRange.Never 然后在达到点数后更改为 AutoRange,您将获得您想要的效果!如果您通过 MVVM 设置 AutoRange 使用 TwoWay 绑定,请注意! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多