如何使用C#在WinForms MS Chart中的范围栏两侧打印标签

时间:2010-03-10 11:31:56

标签: c# winforms mschart

如何为范围栏图系列中的每个y值添加标签?

你们都知道,对于绘制rangebartype系列,我们需要两个yvalues作为yvalue [0]和yvalue [1]。这里我需要为每个yvalues添加数据标签(这意味着在yvalue [0]和yvalue) [1])。我该如何实现?有人可以推荐我吗?请!!

对于范围栏,标签应如下所示(显示在范围栏的两侧)。

Label1 ███████████████ Label2

                    Label███████████████████ Label

1 个答案:

答案 0 :(得分:2)

在MS Chart中没有内置方法可以做到这一点。但是,有一个丑陋的小解决方法可以为您提供所需的显示。

对于要显示的每个数据点(范围栏),您需要创建两个彼此重叠的数据点。举个例子:
DataPoint0:X = 1 Y = 5,10
DataPoint1:X = 1 Y = 10,5

这两个数据点彼此叠加,除了一个从左到右显示,另一个从右到左显示。
对于每个DataPoint,在CustomProperties下,都有BarLabelStyle属性。对于两个数据点,将其设置为“外部”。通常,这将在范围栏的右侧显示标签,但对于DataPoint1,使用反转的Y值,标签现在位于范围栏的左侧。因此,将DataPoint0的标签设置为10(最大值),对于DataPoint1,将标签设置为5(最小值)。

这将看起来就像一个范围栏,左边是最小值,右边是最大值。

警告:如果范围栏的任何一端都太靠近图表的边缘,那么无限智慧的MS Chart将强制标签显示在范围栏内。要解决此问题,您实际上可以将第三个数字添加到DataPoint对象的Y值。此第三个值不会显示,但如果它大于数据系列中的最大Y值,则会强制图表重新缩放以适应此较大的值,因此您的标签不会强制在范围栏内。您也可以通过设置ChartArea的属性来处理另一种方式。