2014-10-02 9 views
1

У меня есть элемент управления MsChart с несколькими сериями SeriesChartType.Polar. В событии MouseMove диаграммы я проверяю, находится ли над DataPoint, и если да, я создаю подсказку, содержащую координаты DataPoint под курсором мыши.DataPoints, скрытые под Axis и AxisLabel

Он хорошо работает для углов (это полярная диаграмма) от 0 до 347 град. Остальная часть DataPoints скрыта под ChartElementType.Axis и/или ChartElementType.AxisLabel, поэтому я не могу получить DataPoint.PointIndex.

private void chart0_MouseMove(object sender, MouseEventArgs e) 
    { 
     var pos = e.Location; 
     HitTestResult result = chart0.HitTest(e.X, e.Y); 

     if (result.ChartElementType == ChartElementType.DataPoint) 
     { 
      var selectedValueY = chart0.Series[result.Series.Name].Points[result.PointIndex].YValues[0]; 
      var selectedValueX = chart0.Series[result.Series.Name].Points[result.PointIndex].XValue; 
      selectedValueY = Math.Round(selectedValueY, 2); 
      ToolTipChart.Show(selectedValueX.ToString() + "°; " + selectedValueY.ToString() + " m", chart0, pos.X, pos.Y - 30); 
     } 

     else 
      ToolTipChart.Hide(chart0); 
    } 

При наведении курсора мыши на скрытых точек данных -> (result.ChartElementType == ChartElementType.Axis) или (result.ChartElementType == ChartElementType.AxisLabel) вместо этого.

Я попытался отключить ось, затем прочитал положение мыши, а затем включил ось, но она слишком медленная, и пользователь видит мигание оси на экране.

Есть ли способ переместить «слой DataPoint» поверх диаграммы, чтобы он не находился под слоем «Ось»?

Ilustration скрытых точек данных:

ответ