我正在尝试使用vb.net自定义线性超级图表X轴的系列标签。
我查看了Infrasgistics的文档,发现我可以使用以下代码:
UltraChart.Axis.Y.Labels.SeriesLabels.FormatString = "<Item_Label>"
这里可以看到可用标签类型的描述。然而,我没有得到我所期望的结果。我得到"第1行",并且我只想得到1"。
我在Infrastics论坛上尝试了这篇文章的第一个回复中使用的方法,其中包括使用带有自定义标签的哈希表。这里使用的代码如下(在C#中):
Hashtable labelHash = new Hashtable();
labelHash.Add("CUSTOM", new MyLabelRenderer());
ultraChart1.LabelHash = labelHash;
xAxis.Labels.ItemFormatString = "<CUSTOM>";
public class MyLabelRenderer : IRenderLabel
{
public string ToString(Hashtable context)
{
string label = (string)context["ITEM_LABEL"];
int row = (int)context["DATA_ROW"];
int col = (int)context["DATA_COLUMN"];
//use row, col, current label's text or other info inside the context to get the axis label.
//the string returned here will replace the current label.
return label;
}
}
这种方法也不起作用。我使用的是Infrasgistics NetAdvantage 2011.1。
有人知道如何自定义这些标签以获得"第#行"后的数字吗?
有不同的方法来解决此任务。一个可能的解决方案是,如果您正在使用FillSceneGraph事件。通过这种方式,您可以获得TEXT基元并对其进行修改。例如:
private void ultraChart1_FillSceneGraph(object sender, Infragistics.UltraChart.Shared.Events.FillSceneGraphEventArgs e)
{
foreach (Primitive pr in e.SceneGraph)
{
if (pr is Text &&((Text)pr).labelStyle.Orientation == TextOrientation.VerticalLeftFacing )
{
pr.PE.Fill = Color.Red;
((Text)pr).SetTextString("My custom labels");
}
}
}
好。我将尝试更深入地解释FormatString属性。使用此属性时,可以确定要显示的信息(例如:项目值或数据值或序列值)。当然,还有使用自定义FormatString的选项。例如:
axisX2.Labels.ItemFormat=轴ItemLabelFormat.Custom;axisX2.Labels.ItemFormatString=";
在这种情况下,我们在X轴上有表示日期的标签,因此如果您使用这两个属性,您可以确定日期格式(例如dd/MM/yyyy或MM/ddd/yy)。在您的场景中,X轴上有字符串值。如果您无法在较低级别修改这些字符串值(例如,在您的数据库中,通过TableAdapters SQL查询、DataSet,即在将DataSource设置为UltraChart之前),那么您可以使用FillSceneGraph事件并修改Text基元。有关此活动的更多详细信息,请访问http://help.infragistics.com/Help/NetAdvantage/WinForms/2013.1/CLR4.0/html/Chart_Modify_Scene_Graph_Using_FillSceneGraph_Event.html如果您需要样品或其他帮助,请毫不犹豫地在我们的网站上创建一个新的论坛线程-http://www.infragistics.com/community/forums/
我很乐意帮助你。