在Axis和AxisLabel下隐藏的DataPoints

时间:2014-10-02 19:38:08

标签: c# mschart mousemove

我有一个带有几个SeriesChartType.Polar系列的MsChart控件。在图表的MouseMove事件中,我检查它是否在DataPoint上,如果是,我生成一个包含鼠标光标下DataPoint坐标的ToolTip。

适用于从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图层”下?

隐藏DataPoints的插图:

1 个答案:

答案 0 :(得分:0)

Theres是一个函数重载Chart.HitTest Method (Int32, Int32, ChartElementType),您可以在其中筛选所需的ChartElementType。

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