This tutorial teaches you how to create a 3D object and render the three MPR orthogonal slices ( Axial, Sagittal and Coronal) on a cell window.
Now, add the three MPR cells: Create a new instance of the MedicalViewerMPRCell and change its properties to accommodate your needs. For this demonstration we will create the axial cell. To do this, add the following lines to the bottom of the InitClass method:
' Create a new cell that will hold the axial frame.
Dim axialCell As MedicalViewerMPRCell = New MedicalViewerMPRCell()
' adjust some properties to view the cross hair.
axialCell.ShowMPRCrossHair = True
axialCell.DistinguishMPRByColor = True
// Create a new cell that will hold the axial frame.
MedicalViewerMPRCell axialCell = new MedicalViewerMPRCell();
// adjust some properties to view the cross hair.
axialCell.ShowMPRCrossHair = true;
axialCell.DistinguishMPRByColor = true;
Assign the axial cell to the medical 3D control through the AxialFrame property. To do this, add the following line at the bottom of the InitClass method:
' Assign this cell (axialCell) to the AxialFrame property of the Medical 3D control
control3D.AxialFrame = axialCell
// Assign this cell (axialCell) to the AxialFrame property of the Medical 3D control
control3D.AxialFrame = axialCell;
Finally, add the created instance to the viewer. To do this, add the following line at the bottom of the InitClass method: [Visual Base]
' add the axial cell to the viewer
viewer.Cells.Add(axialCell)
// add the axial cell to the viewer
viewer.Cells.Add(axialCell);
Repeat the steps (3), (4) and (5) above, to create the sagittal and coronal cells. However, note that in step (4), you must assign the sagittal cell to the SagittalFrame property in the Medical3DControl and the coronal cell to the CoronalFrame property of the Medical 3D control.
The InitClass() should look as shown below:
Private Sub InitClass()
Dim MY_LICENSE_FILE As String = "d:\temp\TestLic.lic"
' Unlock DICOM support
Dim MY_DicomDEVELOPER_KEY As String = "xyz123abc"
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY);
' Unlock Medical support
Dim MY_MedicalDEVELOPER_KEY As String = "abc123xyz"
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY);
' Unlock Medical 3D support
Dim MY_3DDEVELOPER_KEY As String = "123xyzabc"
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY);
// Create a new instance of the Codecs class, which will be used to load the images.
RasterCodecs _codecs = new RasterCodecs();
// Create a new instance of the Medical Viewer. The layout will be divided to 2X2.
MedicalViewer viewer = new MedicalViewer(2, 2);
// Fit the view to the whole form
viewer.Dock = DockStyle.Fill;
// Create the 3D control that will hold the 3D object.
Medical3DControl control3D = new Medical3DControl();
control3D.AddAction(MedicalViewerActionType.WindowLevel);
control3D.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active);
Medical3DObject object3D = new Medical3DObject();
// Add the newly created 3D object to the control.
control3D.ObjectsContainer.Objects.Add(object3D);
object3D.Image = _codecs.Load(@"C:\Users\Public\Documents\LEADTOOLS Images\image1.dcm");
// Add the cell above to the MedicalViewer.
viewer.Cells.Add(control3D);
Controls.Add(viewer);
// Create a new cell that will hold the axial frame.
MedicalViewerMPRCell axialCell = new MedicalViewerMPRCell();
// adjust some properties to view the cross hair.
axialCell.ShowMPRCrossHair = true;
axialCell.DistinguishMPRByColor = true;
// Assign this cell (axialCell) to the AxialFrame property of the Medical 3D control
control3D.AxialFrame = axialCell;
// add the axial cell to the viewer
viewer.Cells.Add(axialCell);
// Create a new cell that will hold the coronal frame.
MedicalViewerMPRCell coronalCell = new MedicalViewerMPRCell();
// adjust some properties to view the cross hair.
coronalCell.ShowMPRCrossHair = true;
coronalCell.DistinguishMPRByColor = true;
// Assign this cell (coronalCell) to the CoronalFrame property of the Medical 3D control
control3D.CoronalFrame = coronalCell;
viewer.Cells.Add(coronalCell);
// Create a new cell that will hold the sagittal frame.
MedicalViewerMPRCell sagittalCell = new MedicalViewerMPRCell();
// adjust some properties to view the cross hair.
sagittalCell.ShowMPRCrossHair = true;
sagittalCell.DistinguishMPRByColor = true;
// Assign this cell (sagittalCell) to the SagittalFrame property of the Medical 3D control
control3D.SagittalFrame = sagittalCell;
viewer.Cells.Add(sagittalCell);
// Add the viewer as a child to the form.
this.Controls.Add(viewer);
End Sub
void InitClass()
{
string MY_LICENSE_FILE = "d:\\temp\\TestLic.lic";
// Unlock DICOM support
string MY_DicomDEVELOPER_KEY = "xyz123abc";
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_DicomDEVELOPER_KEY);
// Unlock Medical support
string MY_MedicalDEVELOPER_KEY = "abc123xyz";
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_MedicalDEVELOPER_KEY);
// Unlock Medical 3D support
string MY_3DDEVELOPER_KEY = "123xyzabc";
RasterSupport.SetLicense(MY_LICENSE_FILE, MY_3DDEVELOPER_KEY);
// Create a new instance of the Codecs class, which will be used to load the images.
RasterCodecs _codecs = new RasterCodecs();
// Create a new instance of the Medical Viewer. The layout will be divided to 2X2.
MedicalViewer viewer = new MedicalViewer(2, 2);
// Fit the view to the whole form
viewer.Dock = DockStyle.Fill;
// Create the 3D control that will hold the 3D object.
Medical3DControl control3D = new Medical3DControl();
control3D.AddAction(MedicalViewerActionType.WindowLevel);
control3D.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active);
Medical3DObject object3D = new Medical3DObject();
// Add the newly created 3D object to the control.
control3D.ObjectsContainer.Objects.Add(object3D);
object3D.Image = _codecs.Load(@"C:\Users\Public\Documents\LEADTOOLS Images\image1.dcm");
// Add the cell above to the MedicalViewer.
viewer.Cells.Add(control3D);
Controls.Add(viewer);
// Create a new cell that will hold the axial frame.
MedicalViewerMPRCell axialCell = new MedicalViewerMPRCell();
// adjust some properties to view the cross hair.
axialCell.ShowMPRCrossHair = true;
axialCell.DistinguishMPRByColor = true;
// Assign this cell (axialCell) to the AxialFrame property of the Medical 3D control
control3D.AxialFrame = axialCell;
// add the axial cell to the viewer
viewer.Cells.Add(axialCell);
// Create a new cell that will hold the coronal frame.
MedicalViewerMPRCell coronalCell = new MedicalViewerMPRCell();
// adjust some properties to view the cross hair.
coronalCell.ShowMPRCrossHair = true;
coronalCell.DistinguishMPRByColor = true;
// Assign this cell (coronalCell) to the CoronalFrame property of the Medical 3D control
control3D.CoronalFrame = coronalCell;
viewer.Cells.Add(coronalCell);
// Create a new cell that will hold the sagittal frame.
MedicalViewerMPRCell sagittalCell = new MedicalViewerMPRCell();
// adjust some properties to view the cross hair.
sagittalCell.ShowMPRCrossHair = true;
sagittalCell.DistinguishMPRByColor = true;
// Assign this cell (sagittalCell) to the SagittalFrame property of the Medical 3D control
control3D.SagittalFrame = sagittalCell;
viewer.Cells.Add(sagittalCell);
// Add the viewer as a child to the form.
this.Controls.Add(viewer);
}
Run the program and you should see four cells: One for the 3D object and the other three for Axial, Sagittal and Coronal cells.
Note:Now you will need to have DICOMDIR files for the next step. You can download a sample from our site. Download the file from here (Download chest_ct_compressed_subset_for_3d_tutorial.zip), and extract the file to "C:\Leadtools_DICOMDIR". For more information on building 3D objects from a DICOMDIR, please see Loading a DICOMDIR To Create a 3D Object.