惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
美团技术团队
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
WordPress大学
WordPress大学
月光博客
月光博客
宝玉的分享
宝玉的分享
小众软件
小众软件
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research
A
About on SuperTechFans
J
Java Code Geeks
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
Vercel News
Vercel News
博客园 - 聂微东

博客园 - 李计刚

怎样定制图表提示? SQL学习笔记之ANSI_NULLS 要生就生双胞胎~ 如何手写代码以生成Composite图表? 在重庆访古~ Infragistics控件在VS.net 2005中使用的注意事项 关于ColumnLine Chart 重庆印象! 用图表向导生成ColumnLineChart 在VS2005中调试JavaScript 那些逝去的美好日子! 关于SELECT执行顺序的问题! Infragistics中Custom Layer的实现(翻译) UltraChart绑定数据的问题(翻译) 韩剧已不再风光! 用颜色矩阵实现的图象反转效果 关于:GDI+FAQ的好去处! 我做的数字图象处理 我的Blog开通了!
UltraChart中如何自定义标签?
李计刚 · 2009-06-02 · via 博客园 - 李计刚
 

     我们生成的ColumnChart,正常情况下X轴上既包括所绑定数值列名称,又包括Series的名称。而相同的数据,在Excel图表中所生成图表,X轴上通常只会显示Series的名称,并不包含所绑定数值列名称。这种情况下,我们要得到后者那样的效果,可通过以下代码方便的控制实现:

         this.UltraChart1.Axis.X.Labels.Visible = false;

         this.UltraChart1.Axis.X.Labels.SeriesLabels.Visible = true;

     通过设置属性,可很方便的对标签显示样式进行设置,如果我们要自定义ColumnChart或其它图表的的标签,显示特定的信息,采用简单的属性设置没法达成目的,该怎么实现呢?大致说来我们要实现IRenderLabel接口以自定义标签显示格式,然后设置X轴的标签显示格式为我们所定义的样式。

      IRenderLabel接口只有一个成员ToString(Hashtable context)contest包含了要处理标签的信息,如context["ITEM_LABEL"]代表列名,context["DATA_VALUE"]代表特定行列的具体值。ToString(Hashtable context)的返回值将被写到标签上,例如其返回值总是“Hello world,则“Hello world”将重复显示在X轴线上。以下代码具体实现了IRenderLabel接口。

using Infragistics.UltraChart.Resources;

...

public class MyLabelRenderer : IRenderLabel

{

    public string ToString(Hashtable context)

    {

           double dataValue = (double)context["DATA_VALUE"];

           if (dataValue > 75)

                  return dataValue.ToString() + " [Very High]";

           else if (dataValue > 50)

                  return dataValue.ToString() + " [High]";

           else if (dataValue > 25)

                  return dataValue.ToString() + " [Medium]";

           else if (dataValue >= 0)

                  return dataValue.ToString() + " [Low]";

           else        

                  return dataValue.ToString() + " [Negative]";

    }

}

然后我们所要做的就是设置图表轴线的ItemFormatString为一特定字符,此字符不能与图表已有名称相冲突,并且此字符要包含在"<" ">"字符间;然后要创建一Hashtable实例,其键名称与设置的图表轴线的ItemFormatString一致,键值是实现IRenderLabel接口的类实例;最后我们要设置图表的LabelHash属性为Hashtable实例,具体实现代码如下:

           this.ultraChart1.Axis.Y.Labels.ItemFormatString = "<MY_VALUE>";

           this.ultraChart1.Axis.X.Labels.ItemFormatString = "<MY_VALUE>";

           Hashtable MyLabelHashTable = new Hashtable();

           MyLabelHashTable.Add("MY_VALUE", new MyLabelRenderer());

           this.ultraChart1.LabelHash = MyLabelHashTable;

           this.ultraChart1.DataSource = GetColumnData();

最终我们所得到的图形效果参见图1

图1 自定义轴线标签效果