我有一个带有几个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的插图:
答案 0 :(得分:0)
Theres是一个函数重载Chart.HitTest Method (Int32, Int32, ChartElementType)
,您可以在其中筛选所需的ChartElementType。
http://msdn.microsoft.com/en-us/library/dd467907%28v=vs.110%29.aspx