本教程可以教您如何创建一个3D对象,和如何将三个MPR正交切片(轴向,矢状和冠状)呈现在一个单元格窗体上。
- 首先,请您启动在创建一个3D对象时所创建的那个项目。
- 现在,请运行程序,您将看到一个2x2的布局,其中的每一个间隔都是以3D对象为填充的。
- 现在,请您添加三个MPR单元格:
创建一个MedicalViewerMPRCell的新实例,并改变它的属性,以满足您的需求。在本演示程序中,我们将创建一个轴向单元格。为了做到这一点,请将以下几行代码添加到InitClass方法的底部:
[Visual Basic]
' 创建一个包含轴向框架的新单元格。
Dim axialCell As MedicalViewerMPRCell = New MedicalViewerMPRCell()
' 调整其部分属性以查看十字线。
axialCell.ShowMPRCrossHair = True
axialCell.DistinguishMPRByColor = True
[C#]
// 创建一个包含轴向框架的新单元格。
MedicalViewerMPRCell axialCell = new MedicalViewerMPRCell();
// 调整其部分属性以查看十字线。
axialCell.ShowMPRCrossHair = true;
axialCell.DistinguishMPRByColor = true;
- 通过AxialFrame属性将轴向单元格分配给Medical3DControl。为了做到这一点,请将以下一行代码添加到InitClass方法的底部:
[Visual Basic]
' 将该单元格 (axialCell) 分配到Medical3DControl的AxialFrame 属性。
control3D.AxialFrame = axialCell
[C#]
// 将该单元格 (axialCell) 分配到Medical3DControl的AxialFrame 属性。
control3D.AxialFrame = axialCell;
- 最后,将所创建的实例添加到查看器。为了做到这一点,请将以下一行代码添加到InitClass方法的底部:
[Visual Base]
' 将该轴向单元格添加到查看器
viewer.Cells.Add(axialCell)
[C#]
// 将该轴向单元格添加到查看器
viewer.Cells.Add(axialCell);
- 重复以上的(3),(4)和(5)这几个步骤,以创建矢状和冠状单元格。但是,请注意这一点,在步骤(4)中,您必须将矢状单元格分配给Medical3DControl中的SagittalFrame属性,并且必须将冠状单元格分配给Medical3DControl的CoronalFrame属性。
- 该方法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);
//创建一个可以用于加载图像的编解码器类的新实例。
RasterCodecs _codecs = new RasterCodecs();
//创建一个Medical查看器的新实例。其查看器布局将被划分为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 = true;
axialCell.DistinguishMPRByColor = true;
//将该单元格(axialCell)分配给Medical3Dcontrol 的AxialFrame属性。
control3D.AxialFrame = axialCell;
//将该轴向单元格添加到查看器。
viewer.Cells.Add(axialCell);
//创建一个包含冠状框架的新单元格。
MedicalViewerMPRCell coronalCell = new MedicalViewerMPRCell();
//调整其部分属性以查看十字线。
coronalCell.ShowMPRCrossHair = true;
coronalCell.DistinguishMPRByColor = true;
// 将该单元格 (coronalCell)分配给Medical3Dcontrol 的CoronalFrame 属性。
control3D.CoronalFrame = coronalCell;
viewer.Cells.Add(coronalCell);
//创建一个包含矢状框架的新单元格。
MedicalViewerMPRCell sagittalCell = new MedicalViewerMPRCell();
//调整其部分属性以查看十字线。
sagittalCell.ShowMPRCrossHair = true;
sagittalCell.DistinguishMPRByColor = true;
//将该单元格(sagittalCell)分配给Medical 3D control的SagittalFrame属性。
control3D.SagittalFrame = sagittalCell;
viewer.Cells.Add(sagittalCell);
//将该查看器作为子目录添加到窗体。
this.Controls.Add(viewer);
End Sub
[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();
//创建一个Medical查看器的新实例。其查看器布局将被划分为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 = true;
axialCell.DistinguishMPRByColor = true;
//将该单元格(axialCell)分配给Medical3Dcontrol 的AxialFrame属性。
control3D.AxialFrame = axialCell;
//将该轴向单元格添加到查看器。
viewer.Cells.Add(axialCell);
//创建一个包含冠状框架的新单元格。
MedicalViewerMPRCell coronalCell = new MedicalViewerMPRCell();
//调整其部分属性以查看十字线。
coronalCell.ShowMPRCrossHair = true;
coronalCell.DistinguishMPRByColor = true;
//将该单元格 (coronalCell)分配给Medical3Dcontrol 的CoronalFrame 属性。
control3D.CoronalFrame = coronalCell;
viewer.Cells.Add(coronalCell);
//创建一个包含矢状框架的新单元��。
MedicalViewerMPRCell sagittalCell = new MedicalViewerMPRCell();
//调整其部分属性以查看十字线。
sagittalCell.ShowMPRCrossHair = true;
sagittalCell.DistinguishMPRByColor = true;
// 将该单元格(sagittalCell)分配给Medical 3D control的SagittalFrame属性。
control3D.SagittalFrame = sagittalCell;
viewer.Cells.Add(sagittalCell);
//将该查看器作为子目录添加到窗体。
this.Controls.Add(viewer);
}
- 最后,请您运行该程序。您将能够看到四个单元格:一个适用于3D对象,另外三个则分别是轴向单元格,矢状单元格和冠状单元格。
注意:如果您想要查看更高质量的图像,我们可以提供DICOMDIR示例文件,您可以点击这里下载。如果您想要了解有关如何从DICOMDIR中构建3D对象的更多详细信息,请参阅加载DICOMDIR来创建一个3D对象。
支持
关于其他产品的更多信息,请访问我们的官方网站,
欢迎下载免费的全功能评估版SDK,全功能试用版中有这个例子的全部源代码。
同时欢迎您使用评估版期间的免费技术支持。