0

我正在使用ZedGraph在我的 C# WinForms 应用程序中显示一些饼图。我想以以下格式显示图例以及每个饼图旁边的标签:

图例:每个项目都应显示饼图的名称,例如"Customers"

切片标签:每个标签应显示值和百分比,例如"4 (25%)"

默认情况下,我可以让图例根据需要显示名称。那么关于标签要求......

我查看了该LabelType属性,它允许我为标签格式选择一些选项(这里是列表)。不幸的是,没有Value_Percent选择。我不能使用包含名称的那些,因为它们太长并且会破坏标签的显示。

我虽然也许我可以自己设置文本标签,因为无论如何我都可以计算值和百分比,所以我尝试了这个:

pieItem.Label.Text = myCustomString;

这确实得到了我想要的标签,但它也将图例键格式设置为相同 - 所以我失去了对名称的要求。

是否可以独立于图例文本更改切片标签文本?或者,是否有可能以另一种方式实现我的要求?

4

1 回答 1

2

我已经通过修改源代码来实现我的要求。我仍然想知道是否有办法在不更改源代码的情况下做到这一点,但与此同时,这就是我所做的......

源代码可以从这里下载,我使用的是 5.1.5 版本,所以我的行号引用在其他版本中可能是错误的。

在两个单独的文件中需要添加两段代码:

ZedGraph/Types.cs

有一个enum被叫PieLabelType位于line 729。在这里,我们需要添加一个名为 的新值Value_Percent

ZedGraph/PieItem.cs

有一个名为BuildLabelString位于的函数line 942。在这个函数中有一个switch语句,我们需要为我们的 new 添加一个新条件PieLabelType

case PieLabelType.Value_Percent:
    curve._labelStr = curve._pieValue.ToString("F", labelFormat) + " (" + (curve._sweepAngle / 360).ToString("P", labelFormat) + ")";
    break;

我选择了格式"# (#.##%)",显然这可以是任何需要的。

而已。只需构建项目,然后将新修改的 DLL 包含在您的应用程序中,新的PieLabelType就可以使用了。

于 2013-07-19T11:02:22.137 回答