【问题标题】:How to check if mouse is over selected area in mschart如何检查鼠标是否在 mschart 中的选定区域上
【发布时间】:2011-07-08 14:05:58
【问题描述】:

在我的 WinForms 应用程序中,我有带有这些设置的图表控件:

chartArea.CursorX.IsUserEnabled = true;
chartArea.CursorX.IsUserSelectionEnabled = true;
chartArea.AxisX.ScaleView.Zoomable = false;

chartArea 是我的 Chart 控件中的主要(也是唯一)ChartArea 对象。

我正在尝试做的是选择区域的可能性(已经有可能),当鼠标悬停在该区域上时,如果我在该选定区域内左键单击图表控件,我不想放大。

这里的第一个问题是如何检测我是否超出了选定区域?使用chart.HitTest() 我可以获得HitTestResult.PointIndex 字段值并将其与选择范围进行比较。但这只有在鼠标正好在 DataPoint 上时才有效。所以它对我正在使用的SeriesChartType.FastLine 不起作用

如果以某种方式解决了这个问题,接下来将是鼠标单击后取消选择的问题(在调用 ClickMouseXXX 事件之前)。


已解决

我找到了axis.PixelPositionToValue() 方法,它提供了我需要的所有信息,因为从 MouseMove 事件参数我有像素位置。 对于点击事件问题,我会写另一个问题。

【问题讨论】:

    标签: c# visual-studio charts


    【解决方案1】:

    【讨论】:

    • 用 VB 编写的旧解决方案,我不知道(但可能我明白那里写的是什么)。我正在使用的控件在 2010 版本的 VS 中可用(我很抱歉我的错误,因为我编写了 MSChart)。虽然您的解决方案不是我一直在寻找的,但这帮助我找到了 PixelPositionToValue() 方法,它解决了我的问题;) 无论如何,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2013-04-02
    • 1970-01-01
    • 2010-11-19
    相关资源
    最近更新 更多