Автоматическое масштабирование оси после панорамирования или увеличения графика Visiblox - PullRequest
2 голосов
/ 28 июля 2011

У меня есть линейчатая диаграмма Visiblox, которая позволяет масштабировать и панорамировать XAxis (но не YAxis). После масштабирования или панорамирования определенной области графика мне бы хотелось пересчитать диапазон YAxis и тики на основе только видимых данных. Я попытался установить AutoScaleToVisibleData = "True" на YAxis, но это не работает, так как масштабирование и панорамирование не устанавливают XAxis.Range, и XAxis.Range должен измениться, чтобы свойство AutoScaleToVisibleData YAxis имело эффект.

EDIT

Я сейчас пытаюсь использовать функцию 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();
}

1 Ответ

0 голосов
/ 01 августа 2011

Метод AdoptZoomAsRange в IAxis, вероятно, то, что вы ищете - есть загружаемый пример, который он использует в этом блоге , который, как мы надеемся, сделает это более понятным.

[раскрытие: я работаю на Visiblox]

...