2013-04-08 4 views
1

У меня есть объект MSChart, который рисует, в частности, линейную диаграмму. Ось Y представляет собой значение капитала, а ось X представляет собой DateTime. Используя поле со списком, пользователь может изменить интервал оси X. Например, выбирая значение «Один день» заставит ось X, чтобы показать один бар каждый день:C# MSChart: Масштабирование на интервале

http://i.imgur.com/pY1c2Mw.png

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

http://i.imgur.com/MwTZO9c.png

автоматически. Тем не менее, я застреваю, потому что не знаю, как найти «положение» первой метки интервалов по оси X. Я знаю, что хочу увеличить масштаб с первой точки данных до метки интервалов, но как я могу это сделать, когда я не знаю, насколько она может быть большой? Помните, что пользователь может сам изменить масштаб времени, поэтому я не могу использовать для этого жестко заданные значения.

Я был бы очень признателен за любую помощь, которую вы можете мне дать, так как до сих пор я не смог найти ничего убедительного.

EDIT: Вот что я нашел до сих пор. В более точных выражениях, я ищу, это положение линии FIRST сетки главной оси X оси. Однако, когда основные решетки для обеих осей рисуются, они не получают реальной позиции, или, по крайней мере, эта позиция не содержится в правильности. Эрго, эта позиция должна быть рассчитана - но как?

ответ

1

Определение триггера события:

SelectionRangeChanged += new EventHandler<CursorEventArgs>(your_handler_function); 

и в определении вашей функции:

public void your_handler_function(object sender, CursorEventArgs e) 
{ 
    e.NewSelectionStart; // the beginning of the new range 
    e.NewSelectionEnd; // the end of the new range 
}