常用的VTK工具/控件(VTK Widget)

转自::https://blog.csdn.net/Jane_yuhui/article/details/52119633

交互部件

  VTK的交互除了提供各种交互样式,还提供了功能更为强大的,可以“看得见”的交互部件,即Widget。VTK的Widget类主要包括vtk3DWidget和vtkAbstractWidget两个父类,它们都派生自vtkInteractorObserver。其中vtk3DWidget主要在三维渲染场景中生成一个可以用于控制数据的可视化实体,比如点、曲线、平面、球体等;后者是VTK里实现“交互/表达实体(Interaction/Representation)”设计的所有Widget的基类。
  vtkAbstractWidget作为基类,只定义一些公共的API以及实现了“交互/表达实体”分离的设计机制,其中,把从vtkRenderWindowInteractor路由过来的信息交给vtkAbstractWidget的“交互”部分处理,而Widget的“表达实体”则对应一个vtkPro对象(或者是vtkWidgetRepresenttation的子类)。
  此外,vtkAbstractWidget类提供了访问vtkWidgetEventTranslator对象的函数,即GetEventTranslator(),该对象的作用可以将VTK事件映射为Widget事件(定义于vtkWidgetEvent.h文件中),通过vtkWidgetEventTranslator类,用户可以定制符合自己使用习惯的控制Widget的事件绑定。利用类vtkWidgetCallbackMapper将相应的Widget事件与各个受保护的静态操作函数关联起来。

vtkWidgetEventTranslator* eventTranslator =  widget->GetEventTranslator();
eventTranslator->SetTranslation(vtkCommand::RightButtonPressEvent, vtkWidgetEvent::Select);
eventTranslator->SetTranslation(vtkCommand::RightButtonReleaseEvent, vtkWidgetEvent::EndSelect);
  •  

创建Widget交互步骤

Widget的创建以及使用基本都是类似的,一般步骤如下。

  1. 实例化Widget
  2. 指定渲染窗口交互器。Widget可以通过它监听用户事件。
  3. 必要时使用观察者/命令模式创建回调函数。
  4. 创建合适的几何表达实体,并用SetRepresentation()函数把它与Widget关联起来,或者使用Widget默认的几何表达实体。
  5. 最后必须激活Widget,使其在渲染场景中显示。

Family of VTK Widgets

3D Slider widget

2D Slider widget

Box widget

Line widget

Implicit plane widget

Plane widget

Image plane widget

Point (or handle) widget

Sphere widget

Scalar bar widget

Spline widget

Checkerboard widget

Rectilinear wipe widget

Text widget

Camera widget

Playback widget

Distance widget

Angle widget

BiDimensional widget

Affine widget

Contour widget

Tracing contours on polygonal surfaces

Live wiring with the contour widget

Logo widget

Seed widget

Caption widget

Balloon widget

Tensor probe widget

Parallelopiped widget

Orientation marker widget

XYPlot widget

Compass widget

小前言

vtkInteractorStyleImage 预设了针对二维图像的交互功能:

Ctrl + 鼠标左键 - 图像的旋转

Shift + 鼠标左键 - 图像的平移

鼠标左键 长按 + 移动 - 图像窗宽和窗位的调节

R - 图像的窗宽和窗位的重置

鼠标滚轮 - 图像的缩放

等等

猜你喜欢

转载自blog.csdn.net/qq_38446366/article/details/82148766
今日推荐