繁体   English   中英

平移或缩放Visiblox图表后自动缩放轴

[英]Autoscaling axis after pan or zoom in Visiblox chart

我有一个Visiblox折线图,它允许在XAxis(而不是YAxis)上进行缩放和平移。 缩放或平移到图表的特定区域后,我希望仅根据可见数据重新计算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();
}

IAxis上的AdoptZoomAsRange方法可能正是您要寻找的-此博客文章中使用了一个可下载的示例,希望可以使这一点更加清楚。

[披露:我在Visiblox上工作]

暂无
暂无

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

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