Точки данных, скрытые под Axis и AxisLabel

1

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

Он хорошо работает для углов (это полярная диаграмма) от 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);
    }

Когда мышь над скрытыми DataPoints → (result.ChartElementType == ChartElementType.Axis) или (result.ChartElementType == ChartElementType.AxisLabel) вместо этого.

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

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

Илюстирование скрытых данных:

Изображение 174551

Теги:
mschart
mousemove

1 ответ

0
Лучший ответ

Theres - функция перегрузки Chart.HitTest Method (Int32, Int32, ChartElementType) где вы можете фильтровать требуемый тип ChartElementType.

http://msdn.microsoft.com/en-us/library/dd467907%28v=vs.110%29.aspx

  • 0
    Это оно. Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню