我正在使用ZedGraph在我的C#WinForms应用程序中显示一些饼图。我想以下列格式显示图例以及每个饼图旁边的标签:
图例:每个项目都应显示饼图切片的名称,例如"Customers"
切片标签:每个标签都应显示值和百分比,例如"4 (25%)"
默认情况下,我可以让图例显示所需的名称。那么关于标签要求......
我查看了LabelType
属性,它允许我为标签格式选择一些选项(here is the list)。不幸的是,没有Value_Percent
选项。我不能使用包含Name的那些因为它们太长而且它会破坏标签的显示。
我想也许我可以自己设置文本标签,因为无论如何我都可以计算出值和百分比,所以我尝试了这个:
pieItem.Label.Text = myCustomString;
这确实得到了我想要的标签,但它也将图例键格式设置为相同 - 所以我失去了Name的要求。
是否可以独立于图例文本更改切片标签文本?或者,是否有可能以另一种方式实现我的要求?
答案 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,即可使用新的"# (#.##%)"
。