问题描述
搜索了很多,自己也尝试了很多,目前还没很好的解决方法,发帖求助。想实现类似CAD制图那种十字光标跟随的效果,其实MsChart是带这功能的设置ChartAre属性:_chartArea.CursorX.IsUserEnabled=true;_chartArea.CursorY.IsUserEnabled=true;
鼠标点击在绘图区域内的时候,就可以看到想要的效果,通过以下代码实现跟随鼠标移动对Chart添加MouseMove事件,在响应方法内实现如下代码:privatevoidChart_MouseMove(objectsender,MouseEventArgse){_currentPointX=e.X;_currentPointY=e.Y;//MsChart.Refresh();没啥效果_chartArea.CursorX.SetCursorPixelPosition(newPointF(_currentPointX,_currentPointY),true);_chartArea.CursorY.SetCursorPixelPosition(newPointF(_currentPointX,_currentPointY),true);//Application.DoEvents();使用此方法当有线程操作时会引发异常}
通过以上方式,其实已经实现了十字光标跟随鼠标移动的功能,数据量小的时候效果也不错,当数据量过大的时候,会明显的感觉到卡顿。但是使用时发现一个特点,当开启曲线缩放的功能时,就是鼠标点击按下拖动时(_chartArea.CursorX.IsUserSelectionEnabled=isallow;),十字光标也会跟着鼠标走,而且不会卡顿。想看看点击按下时发生了什么事情,但是源代码时没有的,只能望洋兴叹。也尝试过自己画两条线上去,鉴于个人能力,实在是性能和效果不堪入目。请问大家有什么好的解决方法?
解决方案
本帖最后由 songqingwei1988 于 2014-03-27 16:57:22 编辑
解决方案二:
这个没有研究过,抱歉哦~
解决方案三:
thankyouallthesame
解决方案四:
引用1楼u013347644的回复:
这个没有研究过,抱歉哦~
thankyouallthesame
解决方案五:
看着帖子默默忧伤啊,明天试试自己画一条上去
解决方案六:
找个皮肤的源代码参考一下吧!
解决方案七:
自己画图第一步,确定绘图区域坐标http://www.cplotts.com/2009/10/09/wpf-silverlight-charting-a-logarithmic-axis/
解决方案八:
解决方案九:
楼主,问题解决没有啊,我也想知道怎么设置类似CAD、股票软件里面的全屏十字光标。
解决方案十:
引用楼主songqingwei1988的回复:
鼠标点击在绘图区域内的时候,就可以看到想要的效果,通过以下代码实现跟随鼠标移动对Chart添加MouseMove事件,在响应方法内实现如下代码:privatevoidChart_MouseMove(objectsender,MouseEventArgse){_currentPointX=e.X;_currentPointY=e.Y;//MsChart.Refresh();没啥效果_chartArea.CursorX.SetCursorPixelPosition(newPointF(_currentPointX,_currentPointY),true);_chartArea.CursorY.SetCursorPixelPosition(newPointF(_currentPointX,_currentPointY),true);//Application.DoEvents();使用此方法当有线程操作时会引发异常}通过以上方式,其实已经实现了十字光标跟随鼠标移动的功能,数据量小的时候效果也不错,当数据量过大的时候,会明显的感觉到卡顿。
你这个代码比实际的代码慢了10000倍。因为实际的代码只需要设置一次就够了,而你的代码则是每一次鼠标移动时都重复设置一次。你应该先判断一下,看看有没有必要SetCursorPixelPosition。