在C++里面,交互器的鼠标事件处理是通过继承vtkInteractorStyleTrackballCamera并重写其鼠标事件函数,但是在C#中是不可行的,直接上代码。
// C++继承vtkInteractorStyleTrackballCamera
class VTKInteractorStyle : public vtkInteractorStyleTrackballCamera {
public:
static VTKInteractorStyle * New();
vtkTypeMacro(VTKInteractorStyle, vtkInteractorStyleTrackballCamera);
void OnMouseMove() override;
void OnRightButtonDown() override;
void OnRightButtonUp() override;
void OnLeftButtonDown() override;
void OnLeftButtonUp() override;
protected:
VTKInteractorStyle();
~VTKInteractorStyle();
};
// C#设置交互事件
vtkInteractorStyleTrackballCamera TrackballStyle = vtkInteractorStyleTrackballCamera.New();
TrackballStyle.RightButtonPressEvt += TrackballStyle_RightButtonPressEvt;
win.GetInteractor().SetInteractorStyle(TrackballStyle);
private void TrackballStyle_RightButtonPressEvt(vtkObject sender, vtkObjectEventArgs e)
{
/*事件处理*/
}