Compartir a través de


Elementos de leyenda personalizados en controles Chart

De forma predeterminada, cada elemento de leyenda están enlazado a una serie y sus propiedades son las mismas para todas las series.Puede utilizar elementos de leyenda personalizados que no están enlazados a ninguna serie y que permiten ajustar la apariencia, posición y margen de cada celda.Para ello, utilice la colección de propiedades Legend.CustomItems (un objeto LegendItemCollection ) para agregar un elemento de leyenda personalizado (un objeto LegendItem ) a una leyenda.Los elementos de leyenda de esta colección siempre están adjuntos al final de otros elementos de leyenda de la leyenda.

Los elementos de leyenda de la colección Legend.CustomItems permiten personalizar lo siguiente:

  • Especificar el símbolo mediante la propiedad LegendItem.ImageStyle.Elegir entre el rectángulo, la línea y el marcador.

  • Utilizar las imágenes como símbolos utilizando propiedad LegendItem.MarkerImage o LegendItem.Image.

  • Agregar celdas a la leyenda.

  • Ajustar la apariencia, posición y margen de cada celda.

Utilizar las celdas en elementos de leyenda personalizados

Para agregar celdas de leyenda (objetos LegendCell) a un elemento de leyenda personalizado, utilice la colección de propiedades LegendItem.Cells (un objeto LegendCellCollection).

Especifique el tipo de celda en la propiedad LegendCell.CellType.Si establece esta propiedad en LegendCellType.SeriesSymbol, la celda de la leyenda usa el símbolo utilizado por el elemento de leyenda contenedor.

Para combinar dos celdas adyacentes en una, con el fin por ejemplo de adaptarla a cadenas largas, utilice la propiedad LegendCell.CellSpan.

Cuando hay por lo menos una celda de leyenda en el elemento de leyenda, las propiedades de apariencia del elemento de leyenda no tienen efecto.

El siguiente código utiliza un elemento de leyenda personalizado en tiempo de ejecución para mostrar la región con la media estadística superior.

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);

Vea también

Referencia

System.Windows.Forms.DataVisualization.Charting

System.Web.UI.DataVisualization.Charting

Conceptos

Leyendas