在我的应用程序中,当光标悬停在形状上时,形状会突出显示。这是通过使用 PointerEntered 和 PointerExited 的事件处理程序来实现的。您还可以拖动形状,形状在拖动时会捕获指针。
如果您将一个形状拖到另一个形状后面,则释放指针时前面的形状应突出显示。但是,这不会发生,因为它的 PointerEntered 事件从未被触发,因为鼠标事件在进入时被拖动的形状捕获。
一种解决方案是在其 PointerCaptureLost 事件处理程序中使用拖动形状前面的所有形状对指针进行命中测试。我在这里找到了一种测试指针是否在形状上的简单方法:
但是,这不适用于我的情况,因为形状可能是不规则的。我认为为此功能实施不规则形状的命中测试将是矫枉过正。
有一个简单的解决方案吗?
(编辑如下...)
我不认为手动实施命中测试是一个可行的解决方案,因为我认为与问题的相当小的程度相比,我认为会涉及大量的工作。
如果指针捕获不活动,这很容易做到。在没有活动指针捕获的情况下拥有可拖动元素是否实用?我可以在画布级别使用 PointerMoved 处理程序而不是形状?[编辑 2] 想一想,在我看来,它会产生比它解决的问题更多的问题。
编辑 3:我已删除此功能以避免此问题。现在形状仅在按下时突出显示,而不是悬停在上面。光标悬停在形状上时会发生变化。从查看其他具有类似功能的应用程序来看,这似乎是一种更典型的方法。