3d 转换鼠标位置

3d 转换鼠标位置,3d,vtk,3d,Vtk,我有以下代码: int p[2]; m_pRenderWindow->GetInteractor()->GetEventPosition(p); vtkRenderer* pFoundRenderer = m_pRenderWindow->GetInteractor()->FindPokedRenderer(p[0], p[1]); if(m_pRenderer2 == pFoundRenderer) { // do something } 在m_pRende

我有以下代码:

int p[2];
m_pRenderWindow->GetInteractor()->GetEventPosition(p);
vtkRenderer* pFoundRenderer = m_pRenderWindow->GetInteractor()->FindPokedRenderer(p[0], p[1]);

if(m_pRenderer2 == pFoundRenderer)
{
    // do something
}
在m_pRenderWindow上,我有4个渲染器。。。当m_pRenderWindow恢复时,(例如,不会在整个屏幕上展开,),p[0]和p[1]不正确(当鼠标位于渲染器3上时,代码表示鼠标位于渲染器2上或其他位置上)。。。为什么?


我想鼠标坐标应该转换成客户端坐标。。。但是如何捕获呢?

什么时候捕获坐标?您是否为您的交互程序创建了事件处理程序?是的,我从vtkCommand派生了一个名为vtkImageInteractionCallback的类,但在那里我只向渲染窗口发送一条消息,如下所示:case vtkCommand::MouseWheelForwardEvent:::PostMessage(m_pView->m_hWnd,WMU_VTKMOUSEWHEEL,1,0);在m_pView中,我有上面的代码…从未尝试过回调函数,我使用过InteractiorStyle,这在选择渲染器方面非常有效,例如。