VTK----VTK的事件机制

本文详细介绍了VTK的事件管理,包括事件的管理、发送、监听和实例。VTK通过vtkRenderWindowInteractor处理鼠标、键盘和定时器事件,采用命令/观察者模式路由事件。事件的发送主要通过vtkObject的InvokeEvent实现,监听则通过AddObserver方法。此外,文章还展示了如何通过vtkInteractorStyle及其子类实现事件处理,例如鼠标左键按下并移动时的旋转效果。
摘要由CSDN通过智能技术生成

事件的发送和接收对于一个应用或系统来说是一个基本的功能,所以一些通用的库对应地也建立了自己的一套管理事件的机制,例如QT、VTK都有自己的事件管理机制。VTK库中定义了很多的事件,这些事件是如何进行管理的,下面从三个方面来详细的说明。

1 事件的管理

在讲述VTK的事件管理之前,我们先以Windows的消息机制来对事件的管理有个大体的认识。一般对于一个程序来说,事件是由操作系统或程序在不同的时刻产生的(例如当用户按下鼠标或敲下键盘时),产生的事件会加入到操作系统的事件队列,应用程序一直在监听事件,在取到事件时做相应的处理,事件也会有优先级,优先级高的事件优先被响应,像Windows的WM_PAINT事件的优先级就比较低。从以上描述可以知道事件机制会涉及到事件的发送、监听、优先级、处理这些过程。

下面是一个包含VTK事件交互的简单例子:

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);
 
#include <vtkActor.h>
#include <vtkCamera.h>
#include <vtkCellArray.h>
#include <vtkFloatArray.h>
#include <vtkNamedColors.h>
#include <vtkNew.h>
#include <vtkPointData.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h&g
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dylan55_you

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值