【问题标题】:Autoscaling axis after pan or zoom in Visiblox chart在 Visiblox 图表中平移或缩放后自动缩放轴
【发布时间】:2011-07-27 21:10:52
【问题描述】:

我有一个 Visiblox 折线图,它允许在 X 轴(但不是 Y 轴)上进行缩放和平移。缩放或平移到图表的特定区域后,我希望仅根据可见数据重新计算 YAxis 范围和刻度。我尝试在 YAxis 上设置 AutoScaleToVisibleData="True",但这不起作用,因为缩放和平移不设置 XAxis.Range,并且 XAxis.Range 必须更改才能使 YAxis 的 AutoScaleToVisibleData 属性生效。

编辑

我现在正在尝试使用 IAxis.AdoptZoomAsRange() 函数,但似乎无法弄清楚。相关示例代码如下:

XAML:

<charts:Chart Name="chart">
    <charts:Chart.Behaviour>
        <charts:BehaviourManager AllowMultipleEnabled="True">
            <charts:PanBehaviour IsEnabled="True" YPanEnabled="False" PanEnded="PanBehaviour_PanEnded" />
            <charts:ZoomBehaviour IsEnabled="True" YZoomEnabled="False" AnimationEnabled="False" ZoomMode="MouseWheel" ZoomEnded="ZoomBehaviour_ZoomEnded" />
        </charts:BehaviourManager>
    </charts:Chart.Behaviour>
    <charts:Chart.XAxis>
        <charts:DateTimeAxis />
    </charts:Chart.XAxis>
    <charts:Chart.YAxis>
        <charts:LinearAxis AutoScaleToVisibleData="True" />
    </charts:Chart.YAxis>
</charts:Chart>

代码隐藏:

public MainWindow()
{
    InitializeComponent();

    DataSeries<DateTime, double> dataSeries = new DataSeries<DateTime, double>();
    for (int i = 0; i < 100; i++)
        dataSeries.Add(new DataPoint<DateTime, double>(DateTime.Now.AddMonths(i), i));

    LineSeries lineSeries = new LineSeries();
    lineSeries.DataSeries = dataSeries;
    chart.Series.Add(lineSeries);
}

private void PanBehaviour_PanEnded(object sender, EventArgs e)
{
    chart.YAxis.AdoptZoomAsRange();
}

private void ZoomBehaviour_ZoomEnded(object sender, EventArgs e)
{
    chart.YAxis.AdoptZoomAsRange();
}

【问题讨论】:

    标签: c# visiblox


    【解决方案1】:

    IAxis 上的 AdoptZoomAsRange 方法可能是您正在寻找的 - 在此 blog post 中使用了一个可下载的示例,希望能更清楚地说明这一点。

    [披露:我在 Visiblox 工作]

    【讨论】:

    • 这看起来我不知道如何让它工作。我已经编辑了我的原始帖子以显示一个示例。我尝试在任何缩放或平移后执行该方法,并且在 YAxis 上将 AutoScaleToVisibleData 设置为 True,但在平移或缩放后 YAxis 没有任何反应。
    • 您需要在 XAxis 而不是 YAxis 上采用 ZoomAsRange。 YAxis 上的 AutoScaleToVisibleData 意味着它将根据 XAxis 范围上可见的内容计算其范围,因此您每次都需要重置该范围。 [免责声明:我为 Visiblox 工作]
    • 将 AdoptZoomAsRange 应用于 XAxis 反而有效;但是,现在图表不会使用鼠标滚轮缩小。在 PanBehavior_PanEnded 和 ZoomBehavior_ZoomEnded 中都调用了 AdoptZoomAsRange。如果我在 ZoomBehavior_ZoomEnded 中删除它,那么我可以缩小,但如果图表已经放大了很远,则只能部分缩小。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多