我有一个简单的问题:为什么以下代码:
int p[2] = {0, 0};
vtkRenderWindow->GetInteractor()->GetMousePosition(&p[0], &p[1]);
TRACE("Mouse position: %d.%d\n", p[0], p[1]);
总是给我鼠标位置:0.0?
如果我解决这个问题,对我来说意味着很多!你能帮帮我一点吗?
答案 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();
}