vtk <vtkRenderWindowInteractor>交互器

声明一个交互器

vtkSmartPointer<vtkRenderWindowInteractor>interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();

设置交互器的交互风格

interactor->SetInteractorStyle(); //设置交互的风格。

常用的两个交互风格

vtkInteractorStyleTrackballCamera**/vtkInteractorStyleImage**

interactor->Initialize(); //初始化

interactor->Start(); //开始交互

功能性:

interactor->GetEventPosition(); //获取事件发生时,displaywindow的坐标
添加观察者:------绑定一个监听事件(如果你不想重写style的话)

interactor->AddObserver(); //添加观察者,这个观察者是 vtkcommand的智能指针,他要带一个特定格式的功能函数

过程是:上一篇文章有介绍到

1)功能事件声明 void function1(vtkObject *caller,unsinged long id,void*,void *)

2)声明callbackcommand

3)为callbackcommand添加fucntion1

4)绑定callbackcommand到interactor()

获取触发的场景(interactor是在场景下进行的)

interactor->GetRenderWindow(); //用在那个渲染窗口上。这个得指定

其他操作:

1,从功能函数获取交互器指针。(这里safedowncast返回的不知智能指针,是原始指针)

vtkRenderWindowInteractor * interactor =vtkRenderWindowInteractor ::SafeDownCast (caller

2,

交互器重载的标准流程和格式

复制代码
class ImagePixelPickerStyle : public vtkInteractorStyleImage  //继承
{
public:
	static ImagePixelPickerStyle* New();   //必须有
	vtkTypeMacro(ImagePixelPickerStyle, vtkInteractorStyleImage);   //必须有

	// 设置需要拾取的图像数据
	void SetImageData(vtkImageData* data) {}

	// 重写左键点击事件
    virtual void OnLeftButtonDown() override {}

private:
	vtkImageData* ImageData = nullptr;    // 图像数据
	int ImageDims[3] = { 0, 0, 0 };         // 图像维度(宽、高、深度)
	int NumComponents = 0;                // 像素通道数(1=灰度,3=RGB)
};

vtkStandardNewMacro(ImagePixelPickerStyle);   //必须添加上
相关推荐
走好每一步1 天前
4、VDK读取xml模型数据
vtk·三维图像
走好每一步3 天前
2、VDK 使用QVTKOpenGLNativeWidget嵌入到QT窗体中
qt·vtk·三维图像
走好每一步6 天前
1、VTK+QT + cmake编程 三维圆柱体
qt·vtk
走好每一步6 天前
0、VDK编译 CMake + VS2017 x64
qt·vtk·三维图像
酬勤-人间道8 天前
VTK 与 Cesium-native 结合实践:小场景三维编辑 + 数字地球精准贴合
c++·qt·vtk·遥感·岩土·cesium-native
CAE虚拟与现实1 个月前
五一假期闲来无事,来个前段、后端的说明吧
前端·后端·vtk·three.js·前后端
vegetablesssss1 个月前
vtk镜像图
c++·qt·vtk
vegetablesssss1 个月前
VTK切割图
c++·qt·vtk
vegetablesssss1 个月前
vtkCamera
qt·vtk