2012-04-23 3 views
0

Я использую элемент управления C# для рисования графика nyquist. Теперь я хочу, чтобы точки данных отображались на кривой каждый раз, когда пользователь нажимает на нее мышь. Поэтому я использовал метод теста попадания в событии GetToolTipText.C# Chart Control serie покрыт специальной меткой

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

это работает, спасибо –

Смежные вопросы