以编程方式创建图表并设置其图例



我正在创建图表饼图、条形图和线图,并希望设置它们的图例以及值a,图例标题并将值指向图表上。 我该怎么做?

通常您不需要添加Legend,因为已经有一个默认的。但是,由于您正在代码中创建Chart,因此您确实必须编写更多代码。添加Legend就是其中之一

您已经创建了一个legend但不是添加它,而是仍然创建了另一个图例。而是写:chartA.Legends.Add(legend)

请注意,带有字符串参数的构造函数上的文档(包括智能感知)是错误的!它按预期工作,而不是 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将自动填充每个Series一个LegendItem(如果您有Pie图表)每DataPoint一个项目

顺便说一句:你可能有额外的Legends但你必须照顾好它们的内容和它们的位置/对接。

更新:如果你愿意,你可以控制传奇的FontTitleFont;它以通常的方式工作,即通过创建一个新的Font,要么从头开始,要么从FontFontFamily

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

您可能希望在标题中插入换行符(n),如果它太长而无法放入垂直图例中。

相关内容

  • 没有找到相关文章

最新更新