找回密码
 立即注册

QQ登录

只需一步,快速开始

kyb11111

中级会员

28

主题

72

帖子

534

积分

中级会员

积分
534

活字格认证

kyb11111
中级会员   /  发表于:2014-12-23 13:14  /   查看:7564  /  回复:5
如何遍历Chart中所有线中的点并且获取XY值

5 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-12-23 16:04:00
沙发
回复 1楼kyb11111的帖子

C1Chart提供了不同类型的DataSeries,也提供了ItemsSource数据绑定的方式。获取的时候,和导入数据的方式相关。
比如C1Chart设置数据如下:
  1.         <c1:C1Chart Name="chart" HorizontalAlignment="Left" Height="80" Margin="43,229,0,0" VerticalAlignment="Top" Width="212">
  2.             <c1:C1Chart.Data>
  3.                 <c1:ChartData ItemNames="P1 P2 P3 P4 P5">
  4.                     <c1:DataSeries Label="Series 1" RenderMode="Default" Values="20 22 19 24 25"/>
  5.                     <c1:DataSeries Label="Series 2" RenderMode="Default" Values="8 12 10 12 15"/>
  6.                 </c1:ChartData>
  7.             </c1:C1Chart.Data>
  8.             <c1:C1ChartLegend/>
  9.         </c1:C1Chart>
复制代码

遍历所有的Data.Children,取得相应的DataSeries去获取数据,代码参考:
  1.   foreach (DataSeries ds in chart.Data.Children)
  2.             {
  3.                 Console.WriteLine(ds.Label+"=====");
  4.                 foreach (object value in ds.Values)
  5.                 {
  6.                     Console.WriteLine(value);
  7.                 }
  8.             }
复制代码


另外附上需要的产品文档:
数据绑定的方式加载数据:http://helpcentral.componentone. ... nts/databinding.htm
设置DataSeries:http://helpcentral.componentone. ... ents/dataseries.htm
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
kyb11111
中级会员   /  发表于:2014-12-23 16:22:00
板凳
回复 2楼Alice的帖子

foreach (object value in ds.Values)
                {
                    Console.WriteLine(value);
                }
这种方式 确定能够将X轴 和 Y轴的值都输出吗?
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-23 17:25:00
地板
回复 3楼kyb11111的帖子

前提是我是通过DataSeries输入数据的:
  1. <c1:DataSeries Label="Series 1" RenderMode="Default" Values="20 22 19 24 25"/>
复制代码

所以Values就是展示在Y轴的数据。X轴上的数据就是ItemNames。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
kyb11111
中级会员   /  发表于:2014-12-23 17:59:00
5#
回复 4楼Alice的帖子

我的意思是 无论我绑定数据用何种方式 都能遍历出每一个点的 X值 和 Y值 如果可以请给我一个Demo
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-12-24 09:30:00
6#
回复 5楼kyb11111的帖子

可以通过C1Chart.Data.Children获取到所有的Series(序列),X,Y轴的值也在每个序列里可以取到。
具体的获取代码就是我上面贴出来的。

只是说需要注意的一点,你设置序列的时候会有很多种类型,默认是DataSeries,所以将Children中的序列转换成DataSeries(具体看2楼贴出的代码),然后获取这个DataSeries的值。
但若是你设置了其他类型的,比如HighLowSeries,那么类型转换的时候就需要转成HighLowSeries。

总的来说,数据都是通过C1Chart.Data.Children来获取,但是强制类型转换的时候就和你本身图表的序列类型相关,默认是DataSeries。

评分

参与人数 1满意度 +5 收起 理由
kyb11111 + 5 我很赞同

查看全部评分

请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部