找回密码
 立即注册

QQ登录

只需一步,快速开始

fan_314

高级会员

6

主题

15

帖子

1173

积分

高级会员

积分
1173

活字格认证

fan_314
高级会员   /  发表于:2012-9-26 10:31  /   查看:11761  /  回复:11
,如图所示,在线图中是否能显示数据交点显示值。

本帖子中包含更多资源

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

x

11 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2012-9-26 10:59:00
沙发
回复 1楼fan_314的帖子

你好,请问楼主使用的是哪个平台的产品?Silverlight 还是 ASP.NET Wijmo?
回复 使用道具 举报
fan_314
高级会员   /  发表于:2012-9-26 11:14:00
板凳
回复 2楼iceman的帖子

你好,使用的是Silverlight的平台,已经购买了贵公司C1的产品,在使用的过程当中碰到这样的需求,不知道C1是否能支持
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-9-26 14:08:00
地板
fan_314 你好

你是希望在交点处显示该点对于的X和Y坐标值吗?

你可以通过Label来显示X和Y对应的值,除此之外,你也可以通过Marker的方式来显示相应的X和Y值。
回复 使用道具 举报
fan_314
高级会员   /  发表于:2012-9-26 14:24:00
5#
回复 4楼dof的帖子

dof老师,你好:
    是想在交点处显示该点对于x和y坐标的值,能否给一个例子。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-9-26 16:18:00
6#
fan_314 你好

图表中与折线相交的那条垂直红线是通过什么方式绘制的,这条红线是固定在该处还是会改变位置,比如鼠标移动之后红线页跟着移动。
回复 使用道具 举报
fan_314
高级会员   /  发表于:2012-9-26 17:03:00
7#
回复 6楼dof的帖子

dof,你好:
    垂直红线是通过C1带的一个方法绘制,这条红线是通过鼠标在chart图上任意的点击生成的一条红线,红线与chart图里面的线相交的点,要显示相交点的x,y坐标值
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-9-26 18:09:00
8#
你好

将 Attach 属性设置为ChartPanelAttach.DataXY时,鼠标移动过程中就会自动停靠在相应的数据点上,并显示相应的X和Y值。
回复 使用道具 举报
fan_314
高级会员   /  发表于:2012-9-26 20:25:00
9#
回复 8楼dof的帖子

dof老师,你好:
   前面可能我没有描述清楚,用鼠标在chart图上面点击某一地方,会在chart图上面生成一条红线,红线会与chart图上面的折线有相交点,需要把相交点的值显示出来,如有3个相交点,则显示3个节点的值。见最上面的图片。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-9-27 12:20:00
10#
fan_314 你好

我大概理解你的需求了,并做了个简单的例子供你参考,主要步骤:
1、添加垂直线
2、添加垂直线和系列交点的显示
3、在鼠标移动时动态改变垂直线和交点标识的位置

  1.     public partial class MainPage : UserControl
  2.     {
  3.         ChartPanel pnl = new ChartPanel();        

  4.         List<Ellipse> markers;

  5.         public MainPage()
  6.         {
  7.             InitializeComponent();

  8.             AddLine();

  9.             AddMarkers();            

  10.             chart.View.Layers.Add(pnl);

  11.             chart.MouseMove += new MouseEventHandler(chart_MouseMove);
  12.         }

  13.         void AddLine()
  14.         {
  15.             Point p = new Point(0, double.NaN);

  16.             var dt = (DataTemplate)Resources["line"];
  17.             var cpo = (ChartPanelObject)dt.LoadContent();
  18.             cpo.DataPoint = p;
  19.             cpo.Action = ChartPanelAction.MouseMove;
  20.             cpo.Attach = ChartPanelAttach.DataXY;
  21.             pnl.Children.Add(cpo);
  22.         }

  23.         void AddMarkers()
  24.         {
  25.             markers = new List<Ellipse>();

  26.             for (int i = 0; i < chart.Data.Children.Count; i++)
  27.             {
  28.                 Ellipse ep = new Ellipse();
  29.                 ep.Width = 50;
  30.                 ep.Height = 50;
  31.                 ep.Stroke = new SolidColorBrush(Colors.Blue);
  32.                 ep.Fill = new SolidColorBrush(Color.FromArgb(64, 0, 0, 255));
  33.                 markers.Add(ep);
  34.                 chart.View.Children.Add(ep);
  35.             }
  36.         }

  37.         void SetMarkerPosition(Point pt)
  38.         {
  39.             double dis1;

  40.             for (int i = 0; i < markers.Count; i++)
  41.             {
  42.                 int p = chart.View.DataIndexFromPoint(pt, i, MeasureOption.X, out dis1);
  43.                 Point ps1 = chart.View.DataIndexToPoint(i, p);

  44.                 Canvas.SetLeft(markers[i], ps1.X - markers[i].Width / 2);
  45.                 Canvas.SetTop(markers[i], ps1.Y - markers[i].Height / 2);
  46.             }
  47.         }

  48.         void chart_MouseMove(object sender, MouseEventArgs e)
  49.         {            
  50.             SetMarkerPosition(e.GetPosition(this));
  51.         }
  52.         
  53.     }
复制代码


运行截图:


源码下载:VS2010 + Silverlight 5.0 + C1 Studio for Silverlight 2012V2

本帖子中包含更多资源

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

x
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部