2

X 軸 (Y 軸ではなく) でズームとパンが可能な Visiblox 折れ線グラフがあります。チャートの特定の領域にズームまたはパンした後、表示されているデータのみに基づいて YAxis の範囲と目盛りを再計算したいと考えています。YAxis で AutoScaleToVisibleData="True" を設定しようとしましたが、ズームとパンが XAxis.Range を設定しないため、これは機能しません。YAxis の AutoScaleToVisibleData プロパティを有効にするには、XAxis.Range を変更する必要があります。

編集

私は今 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();
}
4

1 に答える 1

0

IAxis の AdoptZoomAsRange メソッドは、おそらくあなたが探しているものです。このブログ投稿で使用されているダウンロード可能な例があり、うまくいけばそれがより明確になるはずです。

[開示:私はVisibloxに取り組んでいます]

于 2011-08-01T13:33:56.097 に答える