public MedicalViewerMPRCell AxialFrame { get; set; }
The control that will be used to display the MPR axial frame.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.MedicalViewer;
using Leadtools.Medical3D;
public void Medical3DControlExample()
{
Medical3DLoadDICOMSeriesExamples LoadObject = new Medical3DLoadDICOMSeriesExamples();
MedicalViewerSeriesManager output = LoadObject.LoadJamesHead();
MainForm1 form = new MainForm1(output);
form.ShowDialog();
}
// MainForm1 will be the owner of the medical viewer control.
public class MainForm1 : Form
{
private Medical3DControl _medical3DControl;
private MedicalViewerMPRCell _axial;
private MedicalViewerMPRCell _coronal;
private MedicalViewerMPRCell _saggital;
public MainForm1(MedicalViewerSeriesManager output)
{
RasterCodecs _codecs = new RasterCodecs();
RasterImage _image;
CodecsImageInfo codecsInformation;
_medical3DControl = new Medical3DControl();
this.SizeChanged += new EventHandler(MainForm1_SizeChanged);
this.FormClosing += new FormClosingEventHandler(MainForm1_FormClosing);
_medical3DControl.ObjectsContainer.Objects.Add(new Medical3DObject());
int index;
codecsInformation = _codecs.GetInformation((string)output.Stacks[0].Items[0].Data, true);
int width = codecsInformation.Width;
int height = codecsInformation.Height;
int depth = 256;
_medical3DControl.ObjectsContainer.Objects[0].MemoryEfficientInit(depth);
for (index = 0; index < depth; index++)
{
_image = _codecs.Load((string)output.Stacks[0].Items[index].Data, 0, CodecsLoadByteOrder.BgrOrGrayOrRomm, 1, 1);
_medical3DControl.ObjectsContainer.Objects[0].MemoryEfficientSetFrame(_image, index, output.Stacks[0].Items[index].ImagePosition, true);
}
string spearator = ("\\");
string[] test = output.Stacks[0].Items[0].ImageOrientation.Split(spearator.ToCharArray());
float[] orientation = new float[6];
int i;
for (i = 0; i < 6; i++)
{
orientation[i] = (float)Convert.ToDouble(test[i]);
}
_medical3DControl.ObjectsContainer.Objects[0].MemoryEfficientEnd(orientation, output.Stacks[0].PixelSpacing);
_axial = new MedicalViewerMPRCell();
_coronal = new MedicalViewerMPRCell();
_saggital = new MedicalViewerMPRCell();
// set Medical 3DControl to viewer cell
_medical3DControl.AxialFrame = _axial;
_medical3DControl.SagittalFrame = _saggital;
_medical3DControl.CoronalFrame = _coronal;
// Fit image to cell
_axial.FitImageToCell = true;
_saggital.FitImageToCell = true;
_coronal.FitImageToCell = true;
// Show Cross hair lines
_axial.ShowMPRCrossHair = true;
_saggital.ShowMPRCrossHair = true;
_coronal.ShowMPRCrossHair = true;
// Show cell boundaries
_axial.ShowCellBoundaries = true;
_saggital.ShowCellBoundaries = true;
_coronal.ShowCellBoundaries = true;
// Enable slab option
_medical3DControl.ObjectsContainer.Objects[0].Slab.Enabled = true;
_axial.ShowSlabBoundaries = true;
_saggital.ShowSlabBoundaries = true;
_coronal.ShowSlabBoundaries = true;
// invert the axial image
_axial.InvertImage();
_medical3DControl.ApplyWindowLevelOnAllCells = true;
_medical3DControl.AddAction(MedicalViewerActionType.Rotate3DObject);
_medical3DControl.SetAction(MedicalViewerActionType.Rotate3DObject, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active);
_medical3DControl.AddAction(MedicalViewerActionType.WindowLevel);
_medical3DControl.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active);
this.Controls.Add(_medical3DControl);
this.Controls.Add(_axial);
this.Controls.Add(_coronal);
this.Controls.Add(_saggital);
}
void MainForm1_FormClosing(object sender, FormClosingEventArgs e)
{
_medical3DControl.Dispose();
}
void MainForm1_SizeChanged(object sender, EventArgs e)
{
if (_medical3DControl != null)
_medical3DControl.Size = new Size(this.ClientRectangle.Right / 2, this.ClientRectangle.Bottom / 2);
if (_axial != null)
_axial.Size = new Size(this.ClientRectangle.Right / 2, this.ClientRectangle.Bottom / 2);
if (_saggital != null)
_saggital.Size = new Size(this.ClientRectangle.Right / 2, this.ClientRectangle.Bottom / 2);
if (_coronal != null)
_coronal.Size = new Size(this.ClientRectangle.Right / 2, this.ClientRectangle.Bottom / 2);
_axial.Location = new Point(this.ClientRectangle.Right / 2, 0);
_saggital.Location = new Point(0, this.ClientRectangle.Bottom / 2);
_coronal.Location = new Point(this.ClientRectangle.Right / 2, this.ClientRectangle.Bottom / 2);
}
}