GetMousePosition总是返回0

时间:2015-03-05 12:15:05

标签: vtk

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

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

总是给我鼠标位置:0.0?

如果我解决这个问题,对我来说意味着很多!你能帮帮我一点吗?

1 个答案:

答案 0 :(得分:2)

通常,交互器的事件位置总是在MouseMove,MouseWheelForward等事件上更新。

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

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

您可以在VTK MouseEvents

找到您自己的交互式风格的一个很好的示例

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

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

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

}