自定义图例项(图表控件)

默认情况下,每个图例项绑定到一个序列,所有序列的图例项属性都是相同的。可以使用不绑定到任何序列的自定义图例项,这样可以调整每个单元格的外观、位置和边距。若要使用自定义图例项,请使用 Legend.CustomItems 集合属性(一个 LegendItemCollection 对象)将自定义图例项(一个 LegendItem 对象)添加到图例中。此集合中的图例项总是附加到图例中其他图例项的末尾。

使用 Legend.CustomItems 集合中的图例项可以自定义以下项:

  • 使用 LegendItem.ImageStyle 属性指定符号。在矩形、线和标记中进行选择。

  • 使用 LegendItem.ImageLegendItem.MarkerImage 属性将图像用作符号。

  • 向图例添加单元格。

  • 调整每个单元格的外观、位置和边距。

使用自定义图例项中的单元格

若要将图例单元格(LegendCell 对象)添加到自定义图例项中,请使用 LegendItem.Cells 集合属性(一个 LegendCellCollection 对象)。

LegendCell.CellType 属性中指定单元格类型。如果将此属性设置为 LegendCellType.SeriesSymbol,则图例单元格将使用由容器图例项使用的符号。

若要将两个相邻的单元格合并为一个(如需要容纳较长字符串的情况),请使用 LegendCell.CellSpan 属性。

图例项中至少有一个图例单元格时,图例项的外观属性将不起作用。

以下代码在运行时使用带图例单元格的自定义图例项显示具有最高统计平均值的区域。

Dim avgWA As Double = Chart1.DataManipulator.Statistics.Mean("WA") 
Dim avgOR As Double = Chart1.DataManipulator.Statistics.Mean("OR") 
Dim avgCA As Double = Chart1.DataManipulator.Statistics.Mean("CA") 
Dim top As String = (If(avgWA >= avgOR, "Washington", "Oregon")) 
If avgCA >= avgWA AndAlso avgCA >= avgOR Then 
   top = "California" 
End If 

Dim newItem As New LegendItem() 
newItem.ImageStyle = LegendImageStyle.Marker 
newItem.MarkerStyle = MarkerStyle.Diamond 
newItem.Cells.Add(LegendCellType.SeriesSymbol, "", ContentAlignment.MiddleCenter) 
newItem.Cells.Add(LegendCellType.Text, "State Average =", ContentAlignment.MiddleCenter) 
newItem.Cells(1).CellSpan = 2 
newItem.Cells.Add(LegendCellType.Text, "", ContentAlignment.MiddleCenter) 
newItem.Cells.Add(LegendCellType.Text, top, ContentAlignment.MiddleCenter) 
Chart1.Legends(0).CustomItems.Add(newItem) 
double avgWA = Chart1.DataManipulator.Statistics.Mean("WA");
double avgOR = Chart1.DataManipulator.Statistics.Mean("OR");
double avgCA = Chart1.DataManipulator.Statistics.Mean("CA");
String top = (avgWA >= avgOR ? "Washington":"Oregon");
if (avgCA >= avgWA && avgCA >= avgOR) 
   top = "California";

LegendItem newItem = new LegendItem();
newItem.ImageStyle = LegendImageStyle.Marker;
newItem.MarkerStyle = MarkerStyle.Diamond;
newItem.Cells.Add(LegendCellType.SeriesSymbol, "", ContentAlignment.MiddleCenter);
newItem.Cells.Add(LegendCellType.Text, "State Average =", ContentAlignment.MiddleCenter);
newItem.Cells[1].CellSpan = 2;
newItem.Cells.Add(LegendCellType.Text, "", ContentAlignment.MiddleCenter);
newItem.Cells.Add(LegendCellType.Text, top, ContentAlignment.MiddleCenter);
Chart1.Legends[0].CustomItems.Add(newItem);

请参阅

参考

System.Windows.Forms.DataVisualization.Charting

System.Web.UI.DataVisualization.Charting

其他资源

图例