Voci di legenda personalizzate

Per impostazione predefinita, ciascuna voce di legenda è associata a una serie e le rispettive proprietà sono le stesse per tutte le serie.È possibile utilizzare voci di legenda personalizzate che non sono associate ad alcuna serie e consentono di impostare l'aspetto, la posizione e i margini di ciascuna cella.A questo scopo, utilizzare la proprietà di raccolta Legend.CustomItems (oggetto LegendItemCollection) per aggiungere una voce personalizzata (oggetto LegendItem) a una legenda.Le voci di legenda contenute in questa raccolta sono sempre accodate al termine delle altre voci nella legenda.

Le voci di legenda contenute nella raccolta Legend.CustomItems consentono di personalizzare quanto riportato di seguito.

  • Specificare il simbolo utilizzando la proprietà LegendItem.ImageStyle.Scegliere tra rettangolo, linea e marcatore.

  • Utilizzare immagini al posto di simboli tramite le proprietà LegendItem.Image o LegendItem.MarkerImage.

  • Aggiungere celle alla legenda.

  • Impostare l'aspetto, la posizione e i margini di ciascuna cella.

Utilizzo di celle nelle voci di legenda personalizzate

Per aggiungere celle (oggetti LegendCell) a una voce di legenda personalizzata, utilizzare la proprietà di raccolta LegendItem.Cells (oggetto LegendCellCollection).

Specificare il tipo di cella nella proprietà LegendCell.CellType.Se si imposta questa proprietà su LegendCellType.SeriesSymbol, la cella della legenda utilizzerà il simbolo usato dalla voce di legenda contenitore.

Per unire due celle adiacenti, ad esempio per accettare stringhe più lunghe, utilizzare la proprietà LegendCell.CellSpan.

Quando esiste almeno una cella nella voce di legenda, le proprietà di aspetto della voce di legenda non hanno effetto.

Nel codice riportato di seguito viene utilizzata una voce di legenda personalizzata in fase di esecuzione per mostrare la regione con la media statistica più alta.

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

Vedere anche

Riferimento

System.Windows.Forms.DataVisualization.Charting

System.Web.UI.DataVisualization.Charting

Concetti

Legende