这应该有助于:
private void chart1_MouseClick(object sender, MouseEventArgs e)
{
Axis ay = chart1.ChartAreas[0].AxisY;
int zeroPix = (int)ay.ValueToPixelPosition(0);
HitTestResult hittr = chart1.HitTest(e.X, zeroPix );
// now you can do your stuff..
Text = hittr.ChartElementType.ToString();
}
诀窍是不测试实际的垂直鼠标位置,而是测试数据值所在的像素zero
。由于(正确填充的)StackedColumn
图表DataPoint
在所有列的该位置都应有一个,因此我们可以在HitTest
那里进行。
同样的技巧也适用于柱形图:在这里,每列也将向上或向下达到其y值,但始终从0开始。
StripLines
顺便说一句,使用的想法很有趣,但是我想不出一种找到正确的宽度和位置的方法。
另一个选择是扫描所有系列中的所有点以找到最接近的点,然后使用它们的值,但这听起来更加昂贵。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句