本教程可以教您如何使用3D对象和三个MPR正交切片(轴向,矢状和冠状)的平面功能。
- 让我们以您在“用MPR视图来创建一个3D对象”这一章中所创建的项目为开始吧。
- 运行该程序,您应该可以看到四个单元格:一个是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,全功能试用版中有这个例子的全部源代码。
同时欢迎您使用评估版期间的免费技术支持。