Этот пример я решил сделать после того как пришлось полчаса рыскать по документации, чтобы понять как менять размер шрифтов для меток вдоль осей. Нашел случайно в таком месте, где искать бы и не додумался.
Все примеры объединены в одном solution для Visual Studio 2005 и написаны на языке C#, скачать их можно отсюда.
Проект в примере - FontSize
private double f (double x)
{
if (x == 0)
{
return 1;
}
return Math.Sin (x) / x;
}
private void DrawGraph ()
{
// Получим панель для рисования
GraphPane pane = zedGraph.GraphPane;
// Размеры шрифтов для разных элементов графика
int labelsXfontSize = 25;
int labelsYfontSize = 20;
int titleXFontSize = 25;
int titleYFontSize = 20;
int legendFontSize = 15;
int mainTitleFontSize = 30;
// Установим размеры шрифтов для меток вдоль осей
pane.XAxis.Scale.FontSpec.Size = labelsXfontSize;
pane.YAxis.Scale.FontSpec.Size = labelsYfontSize;
// Установим размеры шрифтов для подписей по осям
pane.XAxis.Title.FontSpec.Size = titleXFontSize;
pane.YAxis.Title.FontSpec.Size = titleYFontSize;
// Установим размеры шрифта для легенды
pane.Legend.FontSpec.Size = legendFontSize;
// Установим размеры шрифта для общего заголовка
pane.Title.FontSpec.Size = mainTitleFontSize;
pane.Title.FontSpec.IsUnderline = true;
// Очистим список кривых на тот случай, если до этого сигналы уже были нарисованы
pane.CurveList.Clear ();
// Создадим список точек
PointPairList list = new PointPairList ();
double xmin = -50;
double xmax = 50;
// Заполняем список точек
for (double x = xmin; x <= xmax; x += 0.01)
{
// добавим в список точку
list.Add (x, f (x));
}
// Создадим кривую с названием "Sinc",
// которая будет рисоваться голубым цветом (Color.Blue),
// Опорные точки выделяться не будут (SymbolType.None)
LineItem myCurve = pane.AddCurve ("Sinc", list, Color.Blue, SymbolType.None);
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
// В противном случае на рисунке будет показана только часть графика,
// которая умещается в интервалы по осям, установленные по умолчанию
zedGraph.AxisChange ();
// Обновляем график
zedGraph.Invalidate ();
}
Вернуться к остальным примерам
Пожалуйста, оцените материал
Рейтинг 5.0/5. Всего 3 голос(а, ов)
А можно-ли зафиксировать размер шрифта у меток для осей, а то при изменении размера окна приложения с ZedGraph-ом меняется размер шрифтов всех объектов? Блин, сильно раздражает, использую сей контрол для отображения нескольких графиков, строю их в один столбец, из меню выбираю какие графики отображать, как добавлю более 3-х графиков, почти ничего не видно, что там написано, как оставлю один - из соседней комнаты можно читать подписи
Jenyay 22.03.2010 - 20:58
Пока еще с этим не разбирался. Как временное решение можно размер шрифта корректировать при изменении размера окна пропорционально этому самому изменению.
Андрей 27.04.2011 - 02:12
Согласен... очень мешает. Либо это не продумано, либо очень глубоко запрятано... Размер шрифта в ZedGraph в каких-то относительных единицах. Думал, может есть какой-нибудь флажок, чтобы задавать абсолютные значения. Ничего подобного не нашёл :(
Андрей 27.04.2011 - 02:23
У класса GraphPane есть свойство IsFontScaled - помогает :)
Не так уж и глубоко, надо было только на поверхности поискать.
Jenyay 27.04.2011 - 16:11
Андрей, спасибо за инфу. Надо будет соответствующий пример сделать.
Нестандартные подписи к осям
Здравствуйте, уважаемые коллеги.
У меня вопрос очень простой можно ли сделать подпись к осям с верхними или нижними индексами? если не возможно, то может проще в это место вставить картинку на которой нарисован данный символ(но как вставить картинку не знаю).
И ещё один вопрос.
Xmin = 0;
Xmax = 20;
Ymin = 0;
Ymax = 10;
Есть кривая выходит из точки Xmin,Ymin и под углом в 30 или 45 градусов поднимается до Xmax, Ymax/2. Так вот вопрос, как на этой кривой ближе к конечной точки сделать надпись под углом 30 или 45 градусов?. Опять же надпись может быть с индексами как верхними так и нижними. Можно ли решить данную задачу с помощью ZedGraph? если да, то как.
С Уважением, Антон.
Спасибо за информацию про смену размера шрифта - очень помогло. На мой взгляд, можно использовать один и тот FontSize для всех осей, легенд и т.д.: тут же главное - это отмасштабировать надписи, чтобы их просто можно было разглядеть на экране.
Jenyay 09.08.2011 - 22:14
Не подскажите, как можно заголовок ОСИ Y разместить на самом вверху?