2012-04-23 36 views
0

我使用C#图表控件绘制nyquist图。现在我希望每次用户在其上移动鼠标时都会在曲线上显示数据点。所以我在GetToolTipText事件中使用了hit测试方法。C#图表控制系列由自定义标签覆盖

private void BodePlot_GetToolTipText(object sender, ToolTipEventArgs e) 
     { 
      HitTestResult result = BodePlot.HitTest(e.X, e.Y); 
      selectDataPoint = null; 

      if (result.ChartElementType == ChartElementType.DataPoint) 
       { 
        selectDataPoint = (DataPoint)result.Object; 
        e.Text = selectDataPoint.ToString(); 
       } 
     { 

问题只是曲线的一部分显示值,其他的不是。当我使用e.Text = result.Object.ToString();获得上鼠标指向的对象,在这里我找到了什么:

enter image description here

而不是显示的数据点,提示显示自定义标签上的文字。所以我想原因是曲线被x和y轴的标签所覆盖。

唯一的解决方案,我发现是禁用x和y轴,一切工作正常。但我想保留这些坐标轴,那么如何让这些标签隐藏在曲线下方。

回答

1

您的分析可能是正确的。解决这个问题的方法是为HitTest()提供可选的第三个参数,它定义了所需的元素类型。

public HitTestResult HitTest (
int x, 
int y, 
ChartElementType requestedElement 
) 

即使其他元素与它们重叠,这也应返回基础数据点。

+0

它的工作原理,谢谢 – 2012-04-25 12:35:29