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();
}
我有一个简单的问题:为什么下面的代码:
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();
}