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

时间:2019-03-26 10:25:21

标签: c# winforms-interop

我正在创建Charts饼图,条形图和折线图,并希望将其图例以及valuea,图例标题设置为图表,并将其指向图表。我该怎么办?

1 个答案:

答案 0 :(得分:0)

通常,您无需添加Legend,因为已经有一个默认值。但是,由于要在代码中创建Chart,因此确实需要多编写一些代码。添加Legend是其中的一项

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

请注意,constructor上带有字符串参数的文档(包括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将自动 填充,每<{1}或一个LegendItem一个Series (如果您有Pie图表)则每个DataPoint一项

顺便说一句:您可能还有Legends,但您必须照顾他们的内容以及他们的立场/对接。.

更新:如果需要,您可以控制Legend的FontTitleFont;它以通常的方式工作,即从Font的{​​{1}}开始创建新的FontFamily

Font

如果标题太长而无法放入垂直图例中,则可能需要在标题中插入换行符( legend.Font = new Font("Consolas", 10f); legend.TitleFont = new Font(legend.Font.FontFamily, 14f); )。