找回密码
 立即注册

QQ登录

只需一步,快速开始

jacky_zh

中级会员

20

主题

54

帖子

508

积分

中级会员

积分
508
jacky_zh
中级会员   /  发表于:2016-8-3 14:01  /   查看:3770  /  回复:4


Alice,你好。

我的那个tooltips效果实现如下,我是利用pannelobject实现的:但是目前以下几个问题,
1,数据响应比较慢,当鼠标悬停在线上一会,tips才会显现。
如下图:

2 当鼠标停在理想区域上的时候,也会触发DataPointChanged时间,此时不能区分的话,就出现下图


下面是demp的源码:请帮我看看


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

4 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2016-8-3 15:47:46
沙发
问题收到了。
1.鼠标移动的时候会显示Tooltip。这么小的区域一条线上有3万个点,一个pixcel上都要画几十个点。不知道你如何鼠标准确到每个点?
通常用户都不会采用这么密集的点显示,一般针对这样的点线都会做抽样(曲线本身不会有影响,但能更准确获取数据)。

2.采用DataPointChanged事件,并不能知道你是Hover到哪条具体的线上,X,y的轴都是通过计算(而且都是有误差的),所以不能区分。
如果你需要区分的话,就需要采用我之前推荐的使用PlotElmentLoaded事件来做,很容易区分线。
http://gcdn.gcpowertools.com.cn/showtopic-23556-1-1.html
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
jacky_zh
中级会员   /  发表于:2016-8-3 16:23:51
板凳
1.“ 鼠标准确到每个点 ”这个通过 <c1chart:ChartPanelObject x:Name="dot"
                             Attach="DataXY"
                             Action="MouseMove"../> 这个实现的。

“点线都会做抽样 ” 这个如何实现?
2 我们现在渲染方式选择了 bitmap这种,好像是不支持PlotElmentLoaded这个的吧。
另外使用tooltips的方式直接会导致数据加载时间过长,程序直接不能正常响应。

我问下:有没有别的事件能够类似于DataPointChanged,能够区分不同曲线响应的事件?我只在数据线上时,触发该事件。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-8-3 18:48:23
地板
jacky_zh 发表于 2016-8-3 16:23
1.“ 鼠标准确到每个点 ”这个通过  这个实现的。

“点线都会做抽样 ” 这个如何实现?

1.对数据源数据进行抽样,不属于产品问题。
您可以在网上找找相关的抽样算法。

2.DataPointChanged事件不能区分,这个事件是你添加了Panel触发的(DataPoint不是针对曲线),不是曲线触发的。所以不支持。

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

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-8-5 13:56:34
5#
jacky_zh 发表于 2016-8-3 16:23
1.“ 鼠标准确到每个点 ”这个通过  这个实现的。

“点线都会做抽样 ” 这个如何实现?

Chart没有直接的API,但是我们可以通过DataIndexFromPoint这个方法来算出Distance, Distance最小,说明离得最近,也就是你点击到的Series.

下面就写了一个算法来计算鼠标接近的是哪个序列,你可以用这个做判断。

  1. int seriesIndex =0;
  2. for (int i = 0; i < c1Chart1.Data.Children.Count; i++)
  3. {
  4.    double distance12;
  5.    int pi = c1Chart1.View.DataIndexFromPoint(pt, i, MeasureOption.XY, out distance12);
  6.   if (double.IsNaN(minDistance) || distance12 < minDistance)
  7.   {
  8.        minDistance = distance12;
  9.        seriesIndex = i;
  10.    }
  11. }
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

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