事件的发送和接收对于一个应用或系统来说是一个基本的功能,所以一些通用的库对应地也建立了自己的一套管理事件的机制,例如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