chart1.GetToolTipText += new EventHandler<ToolTipEventArgs>(chart_GetToolTipText); void chart_GetToolTipText(object sender, ToolTipEventArgs e) |
|
如果你不嫌麻烦 倒是可以这样做:
获取鼠标所在位置在坐标区域内的坐标,判断该坐标离哪个点最近则tootip为那个点的Y值 |
|
10分 |
偷懒点,直接加粗,阴影曲线,不可以吗?
|
鼠标所在位置的坐标 可以根据 公式 (X轴最大值-X轴最小值)/(X最大值出的e.X-X最小值处的e.X)=(鼠标所在位置X坐标-X最小坐标)/(鼠标所在位置e.X-X最小值处的e.X)
同理得出鼠标所在位置的Y坐标值 |
|
如何加粗,或者说点变成个圆圈也可以呀
|
|
void chart_GetToolTipText(object sender, ToolTipEventArgs e)
{ //if (e.HitTestResult.ChartElementType == ChartElementType.DataPoint) //{ // int i = e.HitTestResult.PointIndex; // DataPoint dp = e.HitTestResult.Series.Points[i]; // e.Text = string.Format(“{1:F3}”, dp.XValue, dp.YValues[0]); //} double i1 = 0; int i2 = 0; for (int i = 0; i < chart1.Series[0].Points.Count; i++) { double flag = (chart1.Series[0].Points[i].XValue – e.X) * (chart1.Series[0].Points[i].XValue – e.X) + (chart1.Series[0].Points[i].YValues[0] – e.Y) * (chart1.Series[0].Points[i].YValues[0] – e.Y); if (i == 0) { i1 = flag; } else { if (flag < i1) { i1 = flag; i2 = i; } } } DataPoint dp = chart1.Series[0].Points[i2]; e.Text = string.Format(“{1:F3}”, dp.XValue, dp.YValues[0]); } 这种方式我已经尝试了,弊端太多,不敢往下了 |
|
加粗不知道吗? 是对线的加错。。。像这样
seriesmax.ChartType = SeriesChartType.Line; seriesmax.BorderWidth = 2; seriesmax.ShadowColor = Color.Black; seriesmax.ShadowOffset = 2; |
|
5分 |
提供个思路给你:
1、记得以前有一个软件,当你的鼠标移动到你需要指点的附近时,它就会“磁吸”到点那里去,你也可以这样,挑最近的吸过去。 2、如果你开发的是分析软件,而且精度要求很高的话,建议采用加粗放大方式,点击后“标点”再缩小回去。 仅供参考。 |
问题解决了,我用了chart的mousemove时间,实时跟踪鼠标最近的X轴的位置,然后把cursorX设置到那个位置上,让用户知道我是选的那一个X的值,同时用tooltip显示该X轴上所有的Y值,结贴了谢谢大家。 |
|
仁兄怎么实现的,可否贴出来看看,我也想实现这样的效果,在折线和柱图上都有用,可否赐教leo_navy@163.com
|
|
楼主,见你这个功能很炫,能给我发一份源码吗?我最近也在思考一个相似功能,麻烦您了
|
|
我邮箱547674781@qq.com,麻烦您了
|
|
具体的代码和调用,能发给我一份吗?
万分感谢! 793326822@qq.com |
|
可以给每个点加一个marker,悬停就方便了 |
|
求楼主分享啊
|
|
谁有这段逻辑也给我一份吧。fspuzhang@163.com
|