Разрешение масштабирования, когда диапазон точек меньше чем [-1,1] в DataVisualization.Charting? - PullRequest
0 голосов
/ 02 сентября 2011

У меня есть DataVisualization.Charting.Chart, и для того, чтобы включить контролируемое пользователем масштабирование, я установил

        chartArea1.CursorX.IsUserEnabled = true;
        chartArea1.CursorX.IsUserSelectionEnabled = true;
        chartArea1.CursorY.IsUserEnabled = true;
        chartArea1.CursorY.IsUserSelectionEnabled = true;

Однако, если я сделаю серию, у которой есть ось, вдоль которой диапазон данных находится в пределах [-1,1], диаграмма не позволит масштабировать эту ось. Есть ли способ включить масштабирование?

Кроме того, селектор масштабирования кажется довольно коротким (он привязывается к большим интервалам или что-то в этом роде), возможно ли получить более плавный выбор?

Ответы [ 2 ]

0 голосов
/ 06 сентября 2011

Проблема, как оказалось, была вызвана тем, что масштабирующий курсор мог принимать только координаты положения на дискретной сетке. Они контролируются Cursor.Interval и Cursor.Offset. Вы можете изменить это, установив

Chart.ChartAreas[0].CursorX.Interval = 0;
Chart.ChartAreas[0].CursorY.Interval = 0;

Это делает сетку непрерывной, поэтому масштабирующий курсор может принимать любые координаты.

0 голосов
/ 03 сентября 2011

Покрытие как WPF , так и WinForms , как вы не указали в своем вопросе.

WPF

Похоже, что диаграмма виртуализирует содержимое (т. Е. Рисует только то, что видно).Вы, вероятно, убедитесь, что это так, установив ScrollViewer.CanContentScroll в False.Вы захотите оставить виртуализацию включенной, так как в противном случае производительность будет снижаться при большом наборе данных.

WinForms

Вы установили свойство Chart.DoubleBuffered?Если установить для этого свойства значение true, элемент управления диаграммы будет перерисовывать свою поверхность, используя дополнительный буфер для уменьшения или предотвращения мерцания.

  • Chart Класс ( MSDN )
  • Control.DoubleBuffered Свойство ( MSDN )
...