Пользовательские элементы условных обозначений в элементах управления диаграммы
По умолчанию каждый элемент условных обозначений привязан к ряду, а свойства условных обозначений одинаковы для всех рядов.Можно использовать пользовательские элементы условных обозначений, которые не привязаны ни к одному ряду и позволяют настраивать внешний вид, расположение и поля для каждой ячейки.Для этого с помощью свойства коллекции Legend.CustomItems (объект LegendItemCollection) добавьте настраиваемый элемент условных обозначений (объект LegendItem) в условные обозначения.Элементы условных обозначений из этой коллекции всегда добавляются в конец списка других элементов условных обозначений.
Элементы условных обозначений в коллекции Legend.CustomItems позволяют выполнять следующие операции.
Указывать символ с помощью свойства LegendItem.ImageStyle.Можно выбрать прямоугольник, линию и маркер.
Использовать в качестве символов изображения с помощью свойства LegendItem.Image или LegendItem.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