启用或禁用平移、旋转和缩放按键事件

Enable or disable pan, rotation and zoom on key pressed event

我正在尝试设置一个 vtkInteractorStyle Class (vtkInteractorStyleTrackballCamera) 处理事件以禁用平移、缩放或 回转。这些功能中的每一个都将根据用户按下的键来启用或禁用。 我认为最常见的做法是生成一个事件处理程序 每个不同键的功能,并在其内部设置一些标志 class vtkRenderWindowInteractor 使用类似的函数设置为 false 或 true setPan(false) 或 setPan(true) 等

但是您可能知道 vtkRenderWindowInteractor class 上没有这样的函数或方法。

我的做法对吗?有人有更好的主意吗?

确实没有这样的标志可以将其关闭,而且我认为没有其他方法可以在不修改 vtk 代码的情况下关闭它(请参阅 vtkInteractorStyleTrackballCamera.cxx / vtkInteractorStyle.cxx)。我的方法是创建一个新的 class 继承自 vtkInteractorStyleTrackballCamera,向其添加三个布尔标志(+ setter)并覆盖 StartRotate、StartZoom 和 StartPan 方法,例如:

void vtkMyNewStyle::StartZoom()
{
    if (zoomIsEnabled) // your flag set by setZoom(bool)
        Superclass::StartZoom();
}