前言

通过鼠标的左右键按键,实现模型的旋转操作(在一个平面内)

方法

继承vtkInteractorStyleTrackballCamera类,重写鼠标左右键操作,完成特定功能

class MouseInteractorHighLightActor222 : public vtkInteractorStyleTrackballCamera
{
public:static MouseInteractorHighLightActor222* New();vtkTypeMacro(MouseInteractorHighLightActor222, vtkInteractorStyleTrackballCamera);MouseInteractorHighLightActor222(){m_RotateZStep = 0.0;LastPickedActor = NULL;LastPickedProperty = vtkProperty::New();}virtual ~MouseInteractorHighLightActor222(){LastPickedProperty->Delete();}//左键按下执行以下操作virtual void OnLeftButtonDown(){this->LastPickedActor = tActor;if (this->LastPickedActor){// Save the property of the picked actor so that we can// restore it next timethis->LastPickedProperty->DeepCopy(this->LastPickedActor->GetProperty());// Highlight the picked actor by changing its propertiesm_RotateZStep += 10.05;this->LastPickedActor->GetCenter();//得到床的中心点(30,680,1080)//this->LastPickedActor->SetPosition(222 + m_RotateZStep, 3333, 3333);this->LastPickedActor->RotateZ(m_RotateZStep);}// Forward eventsvtkInteractorStyleTrackballCamera::OnLeftButtonDown();}//右键按下执行以下操作virtual void OnRightButtonDown(){this->LastPickedActor = tActor;if (this->LastPickedActor){// Save the property of the picked actor so that we can// restore it next timethis->LastPickedProperty->DeepCopy(this->LastPickedActor->GetProperty());// Highlight the picked actor by changing its propertiesm_RotateZStep += 10.05;this->LastPickedActor->RotateZ(m_RotateZStep);}// Forward eventsvtkInteractorStyleTrackballCamera::OnRightButtonDown();}virtual void OnChar(){this->LastPickedActor = tActor;switch (this->Interactor->GetKeyCode()){case VK_SPACE:{//if (this->LastPickedActor){// Save the property of the picked actor so that we can// restore it next timethis->LastPickedProperty->DeepCopy(this->LastPickedActor->GetProperty());// Highlight the picked actor by changing its propertiesm_RotateZStep += 10.05;this->LastPickedActor->RotateZ(m_RotateZStep);}cout << "sssssss38up " << endl;break;}case 26:{cout << "wertyuio " << endl;break;}}//vtkInteractorStyleTrackballCamera::OnRightButtonDown();}vtkActor    *tActor;double m_RotateZStep;
private:vtkActor    *LastPickedActor;vtkProperty *LastPickedProperty;
};
vtkStandardNewMacro(MouseInteractorHighLightActor222);

效果

(06)vtk修改默认鼠标操作,实现鼠标按键控制模型旋转相关推荐

  1. (8)VTK 鼠标左右键控制模型旋转

    1. 前言 在一个项目中,需要用鼠标和键盘完成对模型旋转操作和移动操作. 实现中,对鼠标的操作虚函数进行了重写,完成左右键点击,对模型正负方向旋转. 2.代码 #include "InitI ...

  2. [Python从零到壹] 九.网络爬虫之Selenium基础技术万字详解(定位元素、常用方法、键盘鼠标操作)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  3. python相关操作(一)鼠标操作

    目录 1. GUI 控制功能 1.1 自动 防故障功能 1.2 停顿功能 2. 鼠标操作 2.1 控制鼠标移动 3. 获取鼠标位置 4 控制鼠标点击 5  屏幕处理 引用了下面几个博主的文章: pyt ...

  4. SuperMap iClient3D for WebGL修改鼠标操作习惯

    kele 前言 在三维场景中,鼠标的交互是必不可少的,合适的鼠标操作习惯会让浏览场景更加方便.对于刚刚接触超图三维的小伙伴来说,可能还不太习惯超图WebGL的鼠标操作习惯,下面咱们就来看下如何修改成符 ...

  5. python系统字体_Python matplotlib修改默认字体的操作

    matplotlib库作为Python常用的数据可视化库,默认字体居然不支持中文字体,必须得吐槽一下~ 闲言少叙,开始正文 方法1:在plot中指定prop参数 使用matplotlib.font_m ...

  6. aix oracle监听配置_LINUX系统下Oracle修改默认监听端口号操作

    各位头条的朋友们大家好,打算在今后的一段时间为大家分享一批与云计算相关的干货运维技术指南,相信这些操作手册类的文章一定会给大家一些实际的帮助,提升IT技能的@.@大家都知道ORACLE的默认监听端口号 ...

  7. cesium 鼠标操作习惯修改 鼠标左键旋转 鼠标右键平移

    修改鼠标操作习惯 // 倾斜视图 鼠标左键旋转 viewer.scene.screenSpaceCameraController.tiltEventTypes = [ Cesium.CameraEve ...

  8. 客户手动调节音量的范围,修改默认音量各类型音量,按音量键或手动调进度条触发流程,调节音量大小级数每次加减的级数,同时操作指定多个音量类型,更改开机音量,通过底层节点来调节音量大小,音量控制的对话框UI

    frameworks/base/services/core/java/com/android/server/audio/AudioService.java 客户手动调节音量的范围:就是按音量键出来的进 ...

  9. java写键盘鼠标录制器,易语言仿按键精灵录制键盘鼠标操作的代码

    DLL命令表 .版本 2 .DLL命令 取按键状态, 短整数型, "user32.dll", "GetAsyncKeyState" .参数 鼠标键, 整数型 . ...

最新文章

  1. ORACLE的数据类型
  2. php邮件中文乱码,phpmailer 发送邮件中文乱码问题的解决方法总结
  3. [数据库]-----mysql数据的冷热分离 第二版
  4. layui 自定义request_layuiAdmin pro v1.x 【单页版】开发者文档
  5. linux下配置PPTP协议×××
  6. 普通的Shader-序列帧相关
  7. MacBook安装telnet工具和使用
  8. 使用vue创建项目的详细步骤
  9. 机器学习里的攻击-躲避攻击(Evasion attacks)
  10. 如何去除2345好压的广告弹窗
  11. 自适应QP(Adaptive QP)
  12. Python 二维码生成工具
  13. 股票查询接口常见的证券编码规则是怎样的?
  14. 汽车常识全面介绍 - 引擎详论
  15. 西风多少恨,吹不散眉弯
  16. 数据库中的blob是什么类型?
  17. table表头斜线自适应
  18. 详细讲解 “双评价”——农业土地资源评价
  19. iOS微信授权登录集成
  20. 案例:各项目自己进行服务注册的案例

热门文章

  1. airflow+k8s 多用户-分布式-跨集群-容器化调度
  2. hadoop相关问题
  3. c++通过pybind11制作模型python接口,生成python调用包
  4. jquery创建添加append、prepend、appendTo、prependTo、after、insertAfter、before、insertBefore
  5. rabbitmq3.7.3 发布了一个新的 exchange x-random
  6. Swift coreAnimation 加计时器写的游戏《飞机大战》
  7. HTML1.0 - html 环境搭建 开发工具
  8. webservice wsdl 生成服务
  9. wordpress 如何移除管理后台仪表盘小工具
  10. 数据库对象之存储过程