public class Medical3DWindowLevelProperties
Window-leveling allows you to adjust the brightness and the contrast of the 3D object.
Various algorithms result in different brightnesses and contrasts.
For more information, refer to the Medical3DObject.WindowLevelProperties property.
Adjust window-leveling using the mouse. For more information, refer to the Leadtools.MedicalViewer.MedicalViewerBaseCell.AddAction(Leadtools.MedicalViewer.MedicalViewerActionType) method.
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.
class MainForm1 : Form
{
private Medical3DControl _medical3DControl;
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);
_medical3DControl.AddAction(MedicalViewerActionType.WindowLevel);
_medical3DControl.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active);
// Medical3DWindowLevelProperties WindowLevelProperties = new Medical3DWindowLevelProperties();
_medical3DControl.ObjectsContainer.Objects[0].WindowLevelProperties.Center = -400;
_medical3DControl.ObjectsContainer.Objects[0].WindowLevelProperties.Factor = 0;
_medical3DControl.ObjectsContainer.Objects[0].WindowLevelProperties.Type = Medical3DWindowLevelFillType.Linear;
_medical3DControl.ObjectsContainer.Objects[0].WindowLevelProperties.Width = 1200;
Controls.Add(_medical3DControl);
}
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, this.ClientRectangle.Bottom);
}
}