本文档阐述了在 XtraCharts 中使用 图例 的基础,并展示了如何在设计时刻访问图例以及在运行时刻定制图例。
图例概述
图例 是一个伴随图表 图象 的解释性的组件,用于标识最重要的可视化图表元素: 系列、系列点 (在某些情况下)、常数线、数值带 和 指标线。 注意,在每个图表上只可能创建一个图例。
在某些情形中,图例可以显示独特的属于相同系列的数据点,而不是系列本身的名称。 为 饼系列 自动应用数据点图例,并且也可以为大部分其他的 视图类型 应用 —— 通过启用它们的 SeriesViewColorEachSupportBase.ColorEach 属性。 以 饼图 为例,在下面的插图中展示了一个图例,在图例中列出并标识了属于单个系列的数据点。
在图例中显示的每一项都是由一对 标记 及其文字 说明 表示的。
图例标记的外观 (其形状和颜色) 是变化的,这取决于它标识的项的类型。 因此,对于不同 视图类型 的系列,标记的图象也不同,并且对于“常数线”和“数值带”也是如此。 同时,它的颜色是根据所呈现的对应图表元素的颜色来确定的。
对于系列和 指标线,它们的说明是基于名称的 (通过 Series.Name 和 Indicator.Name 属性来指定)。 对于常数线和数值带,它们的说明是由 ConstantLine.LegendText 和 Strip.LegendText 属性确定的。
注意 |
---|
要控制是否在图象中呈现某个系列,则使用此系列的 SeriesBase.ShowInLegend 属性。 与此类似,要在图例中显示或隐藏数值带、常数线和指标线,则使用它们的 Strip.ShowInLegend、ConstantLine.ShowInLegend 和 Indicator.ShowInLegend 属性。 |
对于 饼和圆环视图类型 的系列,经常需要选择在图例中系列点的呈现格式,举例来说,是否只反映它们的取值、参数,或者反映两者。 另外,可能需要把点的取值显示为百分比。 系列的 SeriesBase.LegendPointOptions 属性就是用于访问这些设置的。 可以在 如何: 在饼图的图例中显示百分比值 主题中找到与此相关的具体指南。
在运行时刻定制图例
在运行时刻,在 ChartControl.CustomDrawSeries 或 ChartControl.CustomDrawSeriesPoint 事件处理程序中,可以为个别系列和点定制图例项的外观 (例如基于某个条件)。
另外,在这些事件中,还可以通过 CustomDrawSeriesEventArgs.LegendMarkerImage 和 CustomDrawSeriesEventArgs.LegendMarkerImageSizeMode 属性,来为图例项提供图像标记。
这个示例展示了如何在 ChartControl.CustomDrawSeriesPoint 事件处理程序中,有条件地定制 图例项。
C# | 复制代码 |
---|---|
using System; using System.Windows.Forms; using DevExpress.XtraCharts; // ... private void chartControl1_CustomDrawSeriesPoint(object sender, CustomDrawSeriesPointEventArgs e) { if (Convert.ToDouble(e.SeriesPoint.Values[0]) > 5) { e.LegendText = "exceeded"; e.LegendTextColor = Color.Red; } else { e.LegendMarkerVisible = false; e.LegendTextVisible = false; } } |
Visual Basic | 复制代码 |
---|---|
Imports System Imports System.Windows.Forms Imports DevExpress.XtraCharts ' ... Private Sub chartControl1_CustomDrawSeriesPoint(ByVal sender As Object, _ ByVal e As CustomDrawSeriesPointEventArgs) Handles chartControl1.CustomDrawSeriesPoint If Convert.ToDouble(e.SeriesPoint.Values(0)) > 5 Then e.LegendText = "exceeded" e.LegendTextColor = Color.Red Else e.LegendMarkerVisible = False e.LegendTextVisible = False End If End Sub |