Как получить динамические интервалы в Dundas / Microsoft Chart Controls для Windows Forms?

Я использую элементы управления диаграммами Microsoft для .NET 3.5, и мне трудно заставить элемент управления диаграммой поддерживать окно и изменение размера элемента управления.

У меня есть графики, где значение X - это даты, и я хочу, чтобы диаграмма отображала максимальное количество доступных интервалов / меток на оси диаграммы, когда я изменяю размер окна.

Самое близкое, что я пришел, - это вызвать это из события PrePaint:

double interval = chart.Series[0].Points.Count / ((double)chart.Width / 90);
foreach (var area in chart.ChartAreas.Where(ca => ca.Visible))
{
    area.AxisX.Interval = interval;
}

Благодаря этому интервалы и метки идеально вписываются в ось X, но даты отображаются неправильно. Эта первая метка кажется правильной (некоторая дата в 2008 году), но остальные метки вдоль оси вместо этого отображаются как некоторая дата в 1900 году.

Каков предпочтительный способ сделать это?


person Geir-Tore Lindsve    schedule 11.05.2009    source источник


Ответы (1)


Для дат в Microsoft Chart Controls необходимо явно указать минимальные даты для начала. В противном случае за начало отсчета берется 29 декабря 1899 года. Вы можете установить минимальную и максимальную даты на диаграмме, например

chart.ChartAreas[0].AxisY.Minimum = (new DateTime(2010, 5, 1)).ToOADate();
chart.ChartAreas[0].AxisY.Maximum = (new DateTime(2011, 4, 1)).ToOADate();

Сообщение Создание диаграммы Ганта с помощью элементов управления диаграммами MS содержит ценную информацию об элементах управления диаграммами Microsoft.

person Muhammad Adeel Zahid    schedule 30.08.2010