如何使整个 StackedColumn 可点击,而不仅仅是其中的 DataPoints

How to make an entire StackedColumn clickable, not just the DataPoints in it

当数据点值相对于图表中的最大值较小时,点击图表列并不容易,因为可点击区域太小了。所以,我想找到一种方法让整个列都可以点击,包括显示数据点上方和下方的空白区域。

自从 HitTest 检测到带状线以来,我一直在研究与列对齐的带状线,但我很难理解 if/how 可以进行对齐。

这是一个可行的想法还是有其他方法可以满足我的 objective?

屏幕截图显示了问题。 2025年的数据用BackHatching突出显示。

这应该有帮助:

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 的想法很有趣,顺便说一句,但我想不出找到正确宽度和位置的方法。

另一种选择是扫描所有系列中的所有点以找到我们最接近的点,然后使用它们的值,但这听起来更昂贵..