LeadTools 使用平面来调整3D对象

本教程可以教您如何使用3D对象和三个MPR正交切片(轴向,矢状和冠状)的平面功能。让我们以您在“用MPR视图来创建一个3D对象”这一章中所创建的项目为开始吧。运行该程序,您应该可以看到四个单元格:一个是3D对象单元格,另外三个分别是轴向单元格,矢状单元格和冠状单元格。本教程可以达到与“用MPR视图来创建一个3D对象”相类似的效果,但无需使用十字线。为了删除十字线,我们需要对InitClass() 方法进行编辑,以便将所有单元格的ShowMPRCrossHair属性设置为false。

发布于 2015/11/17 00:00

本教程可以教您如何使用3D对象和三个MPR正交切片(轴向,矢状和冠状)的平面功能。

  1. 让我们以您在“MPR视图来创建一个3D对象”这一章中所创建的项目为开始吧。
  2. 运行该程序,您应该可以看到四个单元格:一个是3D对象单元格,另外三个分别是轴向单元格,矢状单元格和冠状单元格。

本教程可以达到与“用MPR视图来创建一个3D对象”相类似的效果,但无需使用十字线。为了删除十字线,我们需要对InitClass() 方法进行编辑,以便将所有单元格的ShowMPRCrossHair属性设置为false。

[Visual Basic]
            axialCell.ShowMPRCrossHair = false
            coronalCell.ShowMPRCrossHair = false
            sagittalCell.ShowMPRCrossHair = false
                                
[C#]
            axialCell.ShowMPRCrossHair = false;
            coronalCell.ShowMPRCrossHair = false;
            sagittalCell.ShowMPRCrossHair = false;

 

4.您可以将以下这几行代码添加到InitClass()方法的末尾,从而启用平面属性。

[Visual Basic]
            control3D.ObjectsContainer.Objects(0).Slab.Enabled = True
                                        
[C#]
            control3D.ObjectsContainer.Objects[0].Slab.Enabled = true;

 

5.该方法InitClass() 看起来应该如下所示:

[Visual Basic]
            Private Sub InitClass()
                 Dim MY_LICENSE_FILE As String = "d:\temp\TestLic.lic"
                 
                 ' 开启DICOM支持。
                 Dim MY_DicomDEVELOPER_KEY As String = "xyz123abc"
                 RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY);
                 
                 ' 开启Medical支持。
                 Dim MY_MedicalDEVELOPER_KEY As String = "abc123xyz"
                 RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY);
                 
                 ' 开启Medical 3D支持。
                 Dim MY_3DDEVELOPER_KEY As String = "123xyzabc"
                 RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY);
                 
                 ' 创建一个将被用于加载图像的编解码器类的新实例。
                 Dim _codecs As RasterCodecs = New RasterCodecs()
                 ' 创建一个MedicalViewer的新实例。该查看器布局将被划分为2X2。
                 Dim viewer As MedicalViewer = New MedicalViewer(2, 2)
                 ' 使该视图与整个窗体相匹配。
                 viewer.Dock = DockStyle.Fill
                 ' 创建一个包含3D对象的3D控件。
                 Dim control3D As Medical3DControl = New Medical3DControl()
                 control3D.AddAction(MedicalViewerActionType.WindowLevel)
                 control3D.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active)
                 Dim object3D As Medical3DObject = New Medical3DObject()
                 ' 将新创建的3D对象添加到控件。
                 control3D.ObjectsContainer.Objects.Add(object3D)
                 object3D.Image = _codecs.Load("C:\Users\Public\Documents\LEADTOOLS Images\image1.dcm")
                 ' 将以上单元格添加到MedicalViewer。
                 viewer.Cells.Add(control3D)
                 Controls.Add(viewer)
                 
                 ' 创建一个包含轴向框架的新单元格。
                 Dim axialCell As MedicalViewerMPRCell = New MedicalViewerMPRCell()
                 ' 调整其部分属性以查看十字线。
                 axialCell.ShowMPRCrossHair = False
                 axialCell.DistinguishMPRByColor = True
                 
                 ' 将该单元格(axialCell)分配给Medical 3D 控件的AxialFrame 属性。
                  control3D.AxialFrame = axialCell
                 
                 ' 将以上轴向单元格添加到该查看器。
                 viewer.Cells.Add(axialCell)
                 
                 ' 创建一个包含冠状框架的新单元格。
                 Dim coronalCell As MedicalViewerMPRCell = New MedicalViewerMPRCell()
                 
                 ' 调整其部分属性以查看十字线。
                 coronalCell.ShowMPRCrossHair = False
                 coronalCell.DistinguishMPRByColor = True
                 
                 ' 将该单元格(coronalCell) 分配给Medical 3D 控件的CoronalFrame属性。
                 control3D.CoronalFrame = coronalCell
                 
                 viewer.Cells.Add(coronalCell)
                 
                 ' 创建一个包含矢状框架的新单元格。
                 Dim sagittalCell As MedicalViewerMPRCell = New MedicalViewerMPRCell()
                 
                 ' 调整其部分属性以查看十字线。
                 sagittalCell.ShowMPRCrossHair = False
                 sagittalCell.DistinguishMPRByColor = True
                 
                 ' 将该单元格(sagittalCell)分配给Medical 3D 控件的SagittalFrame属性。 
                 control3D.SagittalFrame = sagittalCell
                 
                 viewer.Cells.Add(sagittalCell)
                 
                 ' 将查看器作为子控件添加到窗体。
                 Me.Controls.Add(viewer)
                 
                 control3D.ObjectsContainer.Objects(0).Slab.Enabled = True
            
[C#]
            void InitClass()
            {
                 string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
               
                 // 开启DICOM支持。
                 string MY_DicomDEVELOPER_KEY = "xyz123abc";
                 RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY);
                 
                 //开启Medical支持。
                 string MY_MedicalDEVELOPER_KEY = "abc123xyz";
                 RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY);
                 
                 // 开启Medical 3D支持。
                 string MY_3DDEVELOPER_KEY = "123xyzabc";
                 RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY);
                 
                 // 创建一个将被用于加载图像的编解码器类的新实例。
                 RasterCodecs _codecs = new RasterCodecs();
                 // 创建一个MedicalViewer的新实例。该查看器布局将被划分为2X2。
                 MedicalViewer viewer = new MedicalViewer(2, 2);
                 // 使该视图与整个窗体相匹配。
                 viewer.Dock = DockStyle.Fill;
                 // 创建一个包含3D对象的3D控件。
                 Medical3DControl control3D = new Medical3DControl();
                 control3D.AddAction(MedicalViewerActionType.WindowLevel);
                 control3D.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active);
                 Medical3DObject object3D = new Medical3DObject();
                 // 将新创建的3D对象添加到控件。
                 control3D.ObjectsContainer.Objects.Add(object3D);
                 object3D.Image = _codecs.Load(@"C:\Users\Public\Documents\LEADTOOLS Images\image1.dcm");
                 // 将以上单元格添加到MedicalViewer。
                 viewer.Cells.Add(control3D);
                 Controls.Add(viewer);
                 
                 // 创建一个包含轴向框架的新单元格。
                 MedicalViewerMPRCell axialCell = new MedicalViewerMPRCell();
                 // 调整其部分属性以查看十字线。
                 axialCell.ShowMPRCrossHair = false;
                 axialCell.DistinguishMPRByColor = true;
                 
                 //将该单元格(axialCell)分配给Medical 3D 控件的AxialFrame 属性。
                 control3D.AxialFrame = axialCell;
                 
                 // 将以上轴向单元格添加到该查看器。
                 viewer.Cells.Add(axialCell);
                 
                 // 创建一个包含冠状框架的新单元格。
                 MedicalViewerMPRCell coronalCell = new MedicalViewerMPRCell();
                 
                 // 调整其部分属性以查看十字线。
                 coronalCell.ShowMPRCrossHair = false;
                 coronalCell.DistinguishMPRByColor = true;
                 
                 //将该单元格(coronalCell) 分配给Medical 3D 控件的CoronalFrame属性。
                 control3D.CoronalFrame = coronalCell;
                 
                 viewer.Cells.Add(coronalCell);
                 
                 // 创建一个包含矢状框架的新单元格。
                 MedicalViewerMPRCell sagittalCell = new MedicalViewerMPRCell();
                 
                 // 调整其部分属性以查看十字线。
                 sagittalCell.ShowMPRCrossHair = false;
                 sagittalCell.DistinguishMPRByColor = true;
                 
                 // 将该单元格(sagittalCell)分配给Medical 3D 控件的SagittalFrame属性。
                 control3D.SagittalFrame = sagittalCell;
                 
                 viewer.Cells.Add(sagittalCell);
                 
                 // 将查看器作为子控件添加到窗体。
                 this.Controls.Add(viewer);
                 
                 control3D.ObjectsContainer.Objects[0].Slab.Enabled = true;
            }
            

 

6.请运行该程序,然后您应该可以看到四个窗口:一个用于显示3D对象,另外三个则用于显示正交帧。应该有一条绿色的虚线围绕着三个正交平面的单元格。请通过“单击和拖动”绿色的边框来调整所示矩形的大小。

注意:如果您想要查看更高质量的图像,我们可以提供DICOMDIR示例文件,您可以点击这里进行下载。如果您想要了解有关如何在DICOMDIR中构建3D对象的更多相关详细信息,请参阅这一章“通过加载DICOMDIR来创建一个3D对象”。

支持

关于其他产品的更多信息,请访问我们的官方网站

欢迎下载免费的全功能评估版SDK,全功能试用版中有这个例子的全部源代码。

同时欢迎您使用评估版期间的免费技术支持

关于葡萄城

葡萄城是专业的软件开发技术和低代码平台提供商,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。葡萄城开发技术始于1980年,40余年来始终聚焦软件开发技术,有深厚的技术积累和丰富的产品线。是业界能够同时赋能软件开发和低代码开发的企业。凭借过硬的产品能力、活跃的用户社区和丰富的伙伴生态,与超过3000家合作伙伴紧密合作,产品广泛应用于信息和软件服务、制造、交通运输、建筑、金融、能源、教育、公共管理等支柱产业。

推荐相关案例
推荐相关资源
关注微信
葡萄城社区二维码

关注“葡萄城社区”

加微信获取技术资讯

加微信获取技术资讯

想了解更多信息,请联系我们, 随时掌握技术资源和产品动态