ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

VTK系列教程八:控件Widget

2022-01-29 13:34:40  阅读:396  来源: 互联网

标签:控件 Widget VTK 信息 边框 添加 图像


前面我们已经实现了图像的显示和交互,今天我们来为MedBeyond添加一些控件,控件一般起到指示作用,能提供一些额外的信息。

在MedBeyond工作站中需要添加的控件:
边框控件
图像方向信息控件R、L、H、P
窗宽窗位信息控件
相机方向信息控件
图片
包围盒控件
图片
这些控件我们都可以用VTK中提供的基础元素像搭积木那样搭建出来,但强烈建议在要添加一个控件之前,看看VTK中是否已经有现成的,别重复造轮子,在Interaction\Widgets下面有很多控件,基本能满足绝大多数需求,下面分别看一下MedBeyond工作站中用到的控件如何实现:

边框控件:
如果我们是采用单个RenderWindow多个Renderer的方式,每个Renderer就是一个ViewPort,ViewPort中并没有提供边框,为了美观,需要手动添加,在VTK中有vtkBorderWidget控件,调用SetCurrentRenderer函数向ViewPort添加边框。

图像方向信息控件R、L、H、P:
在VTK中没有找到现成的,手动添加四个vtkTextActor。

窗宽窗位信息控件:
在VTK中有个vtkCornerAnnotation类,不仅可以显示窗宽窗位,还可以显示图像Number、某个点的像素值,并且可以自定义位置,我们称之为四角信息控件。

相机方向信息控件:
在VTK中有个vtkOrientationMarkerWidget控件能实现相机方向信息。

包围盒控件:
在VTK中有个vtkBoxWidget控件能实现相机方向信息。

注意:所有控件都需要调用SetCurrentRenderer,相当于设置父子关系,这样后续设置控件的位置大小时也是基于父Render进行的。

所有控件的基类都是vtkInteractorObserver,可见控件不仅可以响应鼠标操作,而且还能支持回调,也就是当操作控件时,我们可以获取控件状态变化信息,进而实现多个控件之间、图像与控件之间的联动。
图片
例如在包围盒控件中,我们可以通过下面方式添加回调函数:this->m_boxwidget->AddObserver(vtkCommand::InteractionEvent, this->m_boxcallback);当缩放包围盒时可以实现VR图像的裁切。

标签:控件,Widget,VTK,信息,边框,添加,图像
来源: https://blog.csdn.net/weixin_41755306/article/details/122742440

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有