C# ZedGraph饼图标签:如何显示值和百分比,而不是名称?

C# ZedGraph饼图标签:如何显示值和百分比,而不是名称?,c#,zedgraph,C#,Zedgraph,我正在使用在我的C#WinForms应用程序中显示一些饼图。我希望以以下格式显示图例以及每个饼图切片旁边的标签: 图例:每个项目应显示饼图切片的名称,例如“客户” 切片标签:每个标签应显示值和百分比,例如“4(25%)” 默认情况下,我可以让图例显示所需的名称。关于标签要求 我已经研究了LabelType属性,它允许我为标签格式()选择一些选项。不幸的是,没有Value\u Percent选项。我不能使用包含名称的标签,因为它们太长,会破坏标签的显示 我想也许我可以自己设置文本标签,因为我可以计

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

图例:每个项目应显示饼图切片的名称,例如
“客户”

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

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

我已经研究了
LabelType
属性,它允许我为标签格式()选择一些选项。不幸的是,没有
Value\u Percent
选项。我不能使用包含名称的标签,因为它们太长,会破坏标签的显示

我想也许我可以自己设置文本标签,因为我可以计算值和百分比,所以我尝试了以下方法:

pieItem.Label.Text = myCustomString;
这确实得到了我想要的标签,但它也将图例键格式设置为相同的格式-因此我失去了名称的要求


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

我通过修改源代码来实现我的需求。我仍然很想知道是否有一种方法可以在不改变源代码的情况下做到这一点,但同时我也做了一些事情

源代码可以是,我使用了版本5.1.5,所以我的行号引用在其他版本中可能是错误的

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

ZedGraph/Types.cs

第729行
有一个名为
PieLabelType
enum
。这里我们需要添加一个名为
value\u Percent
的新值

ZedGraph/PieItem.cs

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

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


就这样。只需构建项目,然后在应用程序中包含新修改的DLL,新的
PielabType
就可以使用了。

为什么不使用ZedGraph支持区域呢@你看过了吗?它死了,没有人对他们的任何问题得到任何答复。我不会为一个死了的操作系统项目而烦恼。提交一个请求,看看它是否还有生命。为什么不使用
string.Format(“{0:F}({1:P})”,curve.\u-pieValue,curve.\u-sweepAngle/360)@RobvanderVeer:因为我使用了已经存在的名称\值\百分比,只是删除了名称位。