Серия C # Chart Control покрыта пользовательской меткой

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

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();, чтобы получить объект, на который указывает мышь, вот что я нашел:

введите здесь описание изображения

Вместо отображения точек данных текст во всплывающей подсказке показывает пользовательскую метку. Итак, я предполагаю, что причина в том, что кривая покрыта метками осей x и y.

Единственное решение, которое я нашел, это отключение осей x и y, с этим все работает нормально. Но я хочу сохранить эти оси, так как я могу скрыть эти метки под кривой.


person Jay Dao    schedule 23.04.2012    source источник


Ответы (1)


Ваш анализ, скорее всего, правильный. Способом обойти это было бы предоставить HitTest() необязательный третий аргумент, который определяет желаемый тип элемента.

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

Это должно возвращать базовые точки данных, даже если другие элементы перекрывают их.

person zeFrenchy    schedule 23.04.2012