ZedGraph Pie Label:如何显示Value和Percent,但不是Name?

时间:2013-07-19 10:17:29

标签: c# zedgraph

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

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

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

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

我查看了LabelType属性,它允许我为标签格式选择一些选项(here is the list)。不幸的是,没有Value_Percent选项。我不能使用包含Name的那些因为它们太长而且它会破坏标签的显示。

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

pieItem.Label.Text = myCustomString;

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

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

1 个答案:

答案 0 :(得分:2)

我已经设法通过修改源代码来实现我的要求。我仍然有兴趣知道是否有办法在不进行源更改的情况下进行此操作,但在这段时间我就是这样做...

源代码可以是downloaded from here,我使用的是版本5.1.5,因此我的行号参考可能在其他版本中有误。

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

ZedGraph / Types.cs

位于enum的{​​{1}}名为PieLabelType。在这里,我们需要添加一个名为line 729的新值。

ZedGraph / PieItem.cs

Value_Percent有一个名为BuildLabelString的函数。在此函数中有line 942语句,我们需要为新switch添加新条件:

PieLabelType

我选择了格式case PieLabelType.Value_Percent: curve._labelStr = curve._pieValue.ToString("F", labelFormat) + " (" + (curve._sweepAngle / 360).ToString("P", labelFormat) + ")"; break; ,显然这可以是任何必需的。

就是这样。只需构建项目,然后在应用程序中包含新修改的DLL,即可使用新的"# (#.##%)"