Программно создание графика и настройка его легенд - PullRequest
0 голосов
/ 26 марта 2019

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

1 Ответ

0 голосов
/ 27 марта 2019

Обычно вам не нужно добавлять Legend, поскольку уже есть значение по умолчанию.Но поскольку вы создаете код Chart, вам действительно нужно немного больше кода.Добавление Legend - это один из этих вещей.

Вы создали legend, но вместо добавления вы создаете еще одну легенду.Вместо этого напишите: chartA.Legends.Add(legend)

Обратите внимание, что документация (включая Intellisense) неверна для конструктора со строковым параметром!Он работает, как и ожидалось, а не так, как описано в MSDN!

То, что я предложил (chartA.Legends[0].Title = "someString";), работает нормально, если вы сделали все остальное, что вам нужно:

Вам также придется создать(по крайней мере)

  • Один ChartArea
  • Один Series вместе с ChartType, который вы хотите ..
  • .. для того, чтобы сделатьэто показывает, что вы также должны добавить DataPoint.

Пример:

Legend legend = new Legend();
Chart chartA = new Chart();     // <<---!
chartA.BackColor = Color.White;
chartA.Width = 370;
chartA.Height = 250;
chartA.Location = new Point(48, 35);
chartA.Name = textBox1.Text;
chartA.Legends.Add(legend);     // <<---!
legend.Title = "Age of The Employees";     // <<---!

chartA.ChartAreas.Add(new ChartArea("ca"));     // <<---!
chartA.ChartAreas["ca"].BackColor = Color.LightSeaGreen;
Series s1 = chartA.Series.Add("s1");     // <<---!
s1.ChartType = SeriesChartType.Pie;
s1.Points.AddY(12);
s1.Points.AddY(32);
..

Первый Legend будет автоматически заполняться либо одним LegendItem на Series или (если у вас есть Pie диаграмма) один элемент за DataPoint

Кстати: у вас может быть дополнительно Legends, но вам придется позаботиться об их содержании иих положение / стыковка ..

Обновление: если вы хотите, вы можете взять под контроль и легенды Font и TitleFont;Это работает обычным образом, то есть путем создания нового Font, либо с нуля, либо из FontFamily из Font:

 legend.Font = new Font("Consolas", 10f);
 legend.TitleFont = new Font(legend.Font.FontFamily, 14f);

Возможно, вы захотите вставить символ новой строки (\n) в заголовок, если он слишком длинный, чтобы поместиться в вертикальную легенду.

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