彩票走势图

如何在图表控件Chart FX 7的“点”上设置自定义标签

原创|使用教程|编辑:郝浩|2013-08-21 14:04:07.000|阅读 460 次

概述:Chart FX 7是一款轻量级.NET图表控件,他可应用于Visual Studio、VS.Net、 WPF、 Silverlight、 Java ASP、 Client Server & SQL Reporting 应用程序。 不过在使用Chart FX 7的时候还是会遇到各种问题,今天和大家一起来解决自定义标签中的一些疑难。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

Chart FX 7是一款轻量级.NET图表控件,他可应用于Visual Studio、VS.Net、 WPF、 Silverlight、 Java ASP、 Client Server & SQL Reporting 应用程序。 不过在使用Chart FX 7的时候还是会遇到各种问题,今天和大家一起来解决自定义标签中的一些疑难。

操作环境:

系统:Windows 7(64位)

控件版本:Chart FX 7( Chart FX for Visual Studio 2005 )

准备工作:

为了将数据填进条形图,使用了以下代码:

string mySelectQuery = "SELECT * from SampleFinancial";



string myConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Samples.mdb;";                

System.Data.OleDb.OleDbConnection myConnection = new System.Data.OleDb.OleDbConnection(myConnectionString);                

System.Data.DataSet ds = new System.Data.DataSet();               

 System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(mySelectQuery, myConnection);                

adapter.Fill(ds, "Financial");                

chart1.DataSourceSettings.Fields.Add(new FieldMap("Date",FieldUsage.XValue));               

chart1.DataSourceSettings.Fields.Add(new FieldMap("Closed",FieldUsage.Value));                

chart1.DataSource = ds.Tables[0];  

 

I want to set a custom label to every point. For example, I want to set the word "Hello" to every point in the chart.

I am trying to do this by using the following code (I should do that for every point in my chart):

chart1.Series[0].PointLabels.Visible = true;

chart1.Series[0].PointLabels.Format = "%L";

chart1.Points[0, 1].Text = "Hello"; 

Chart FX 7代码示例

然后,我希望在每一个点上都设置自定义标签。例如:我想要将"Hello"这个词添加进图表的每一个点。

使用以下代码完成这项工作:

chart1.Series[0].PointLabels.Format = "%L";

chart1.Points[0, 1].Text = "Hello";

实际上,我要做的是在图表中每一个点都得到这样的效果,上面的代码还不能达到我期望的效果。所以我们需要寻找途径对其进行修改。

1、使用FieldUsage

参考Chart FX 7中附带的气泡图示例:

--在区域中设置FieldUsage,将文本保存为标签

--读取所有的标签,设置在一个数组的字符串

--使用chart1_GetPointLabel从这个字符串中读取点的文本属性

2、chart1_GetPointLabel不可用问题

按照前面叙述的方式,chart1_GetPointLabel可能不能正常工作,此时我们在Proyects

Samples>BordersandBackgrounds>InitializeComponent中添加以下代码:

chart1.AllSeries.PointLabels.Visible = true;

chart1.GetPointLabel += new ChartFX.WinForms.PointLabelEventHandler

(chart1_GetPointLabel);

如果事件被触发,问题解决,如果没有,请看看下文。

3、添加代码,触发chart1_GetPointLabel事件

代码:chart1_GetPointLabel

4、关于系列在其他pane中的显示问题。

例如: Proyects Samples中的proyect Panes,事件无法在其他pane中触发,只能在主pane中工作。

因为不同pane意味着不同的轴,所以可以设置轴的"notify"属性为"true"。

代码:chart1.AxesY[index].Notify = true;

例子:

按照下面的代码设置,事件依旧在一个系列中触发:

ChartFX.WinForms.Pane pane1 = new ChartFX.WinForms.Pane();

chart1.Panes.Add(pane1);

AxisY axisy = new AxisY();

chart1.AxesY.Add(axisy);

chart1.Series[1].AxisY = axisy;

chart1.Series[0].Pane = chart1.Panes[0];

chart1.Series[1].Pane = chart1.Panes[1];

chart1.AllSeries.PointLabels.Visible = true;

chart1.GetPointLabel += new PointLabelEventHandler(chart1_GetPointLabel);

for (int i = 0; i < chart1.AxesY.Count; i++)

{

chart1.AxesY[i].Notify = true;

}

And the event:

int cant = 0;

void chart1_GetPointLabel(object sender, PointLabelEventArgs e)

{

e.Text = "serie: " + e.Series + " " + cant;

cant++;

}

根据我们上文讲到的内容,我们可以添加pane到集合,与之关联的轴也可能将随之添加进轴集合,我们可以设置以下代码:

pane1.AxisY.Notify = true;

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:慧都控件网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP