GetMousePosition return 始终为 0

GetMousePosition return always 0

我有一个简单的问题:为什么下面的代码:

int p[2] = {0, 0};
vtkRenderWindow->GetInteractor()->GetMousePosition(&p[0], &p[1]);
TRACE("Mouse position: %d.%d\n", p[0], p[1]);

总是给我 Mouse position: 0.0 ?

如果我解决了这个问题,对我来说意义重大!!!你能帮我一点忙吗?

一般情况下,交互器的事件位置总是根据 MouseMove、MouseWheelForward 等事件更新。

因此,如果您创建自己的交互器样式并处理 MouseWheelForwardEvt,则您可以通过查询事件位置来获取鼠标光标在渲染器中的当前位置。

此外,您应该确保在滚动 MouseWheel 时 RenderWindow 具有焦点,否则无法识别该事件。

可以在此处找到您自己的交互器样式的一个很好的示例 VTK MouseEvents

根据 link 中的示例,您的 MouseWheelForwardEvt 可能如下所示(假设使用 vtkInteractorStyleTrackballCamera)。

virtual void OnMouseWheelForwardEvt()
{
     myInteractor->GetEventPosition(x,y);
     //do more stuff

     //forward the event
     vtkInteractorStyleTrackballCamera::OnMouseWheelForwardEvt();

}