- fileName
- The file name for which the state data will be saved.
Visual Basic (Usage) | Copy Code |
---|---|
Dim instance As Medical3DObject Dim fileName As String instance.SaveState(fileName) |
Parameters
- fileName
- The file name for which the state data will be saved.
Visual Basic | Copy Code |
---|---|
Public Sub Medical3DControlExample() Dim LoadObject As Medical3DLoadDICOMSeriesExamples = New Medical3DLoadDICOMSeriesExamples() Dim output As MedicalViewerSeriesManager = LoadObject.LoadJamesHead() Dim form As MainForm1 = New MainForm1(output) form.ShowDialog() End Sub ' MainForm1 will be the owner of the medical viewer control. Private Class MainForm1 : Inherits Form Private _medical3DControl As Medical3DControl Public Sub New(ByVal output As MedicalViewerSeriesManager) Dim _codecs As RasterCodecs = New RasterCodecs() Dim _image As RasterImage Dim codecsInformation As CodecsImageInfo _medical3DControl = New Medical3DControl() AddHandler SizeChanged, AddressOf MainForm1_SizeChanged AddHandler FormClosing, AddressOf MainForm1_FormClosing _medical3DControl.ObjectsContainer.Objects.Add(New Medical3DObject()) Dim index As Integer codecsInformation = _codecs.GetInformation(CStr(output.Stacks(0).Items(0).Data), True) Dim width As Integer = codecsInformation.Width Dim height As Integer = codecsInformation.Height Dim depth As Integer = 256 _medical3DControl.ObjectsContainer.Objects(0).MemoryEfficientInit(depth) index = 0 Do While index < depth _image = _codecs.Load(CStr(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) index += 1 Loop Dim spearator As String = ("\") Dim test As String() = output.Stacks(0).Items(0).ImageOrientation.Split(spearator.ToCharArray()) Dim orientation As Single() = New Single(5) {} Dim i As Integer For i = 0 To 5 orientation(i) = CSng(Convert.ToDouble(test(i))) Next i _medical3DControl.ObjectsContainer.Objects(0).MemoryEfficientEnd(orientation, output.Stacks(0).PixelSpacing) Dim MinimumDensityValue As Integer = _medical3DControl.ObjectsContainer.Objects(0).MinimumValue Dim MaximumDensityValue As Integer = _medical3DControl.ObjectsContainer.Objects(0).MaximumValue ' Set 3D object Parameters to be saved ' Set WindowLevel _medical3DControl.ObjectsContainer.Objects(0).WindowLevelProperties.Center = MaximumDensityValue \ 2 _medical3DControl.ObjectsContainer.Objects(0).WindowLevelProperties.Width = MaximumDensityValue \ 2 ' Set Object Rotation Matrix _medical3DControl.ObjectsContainer.Objects(0).RotateX(100) _medical3DControl.ObjectsContainer.Objects(0).RotateY(20) _medical3DControl.ObjectsContainer.Objects(0).RotateZ(10) 'Set Remove Density Parameters _medical3DControl.ObjectsContainer.Objects(0).UpperThreshold = MaximumDensityValue / 2.5F _medical3DControl.ObjectsContainer.Objects(0).LowerThreshold = MinimumDensityValue _medical3DControl.ObjectsContainer.Objects(0).RemoveInterval = Medical3DRemoveIntervalType.InnerRange _medical3DControl.ObjectsContainer.Objects(0).EnableThresholding = True 'Set Slab Parameters _medical3DControl.ObjectsContainer.Objects(0).Slab.SetValues(0.75F, -1.0F, 0.5F, -0.5F, 1.0F, -1.0F) _medical3DControl.ObjectsContainer.Objects(0).Slab.Enabled = True Dim fileName As String = Path.Combine(LEAD_VARS.ImagesDir, "CT_PelvisState") _medical3DControl.ObjectsContainer.Objects(0).SaveState(fileName) Controls.Add(_medical3DControl) End Sub Private Sub MainForm1_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) _medical3DControl.Dispose() End Sub Private Sub MainForm1_SizeChanged(ByVal sender As Object, ByVal e As EventArgs) If Not _medical3DControl Is Nothing Then _medical3DControl.Size = New Size(Me.ClientRectangle.Right, Me.ClientRectangle.Bottom) End If End Sub End Class Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class |
C# | Copy Code |
---|---|
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); int MinimumDensityValue = _medical3DControl.ObjectsContainer.Objects[0].MinimumValue; int MaximumDensityValue = _medical3DControl.ObjectsContainer.Objects[0].MaximumValue; // Set 3D object Parameters to be saved // Set WindowLevel _medical3DControl.ObjectsContainer.Objects[0].WindowLevelProperties.Center = MaximumDensityValue / 2; _medical3DControl.ObjectsContainer.Objects[0].WindowLevelProperties.Width = MaximumDensityValue / 2; // Set Object Rotation Matrix _medical3DControl.ObjectsContainer.Objects[0].RotateX(100); _medical3DControl.ObjectsContainer.Objects[0].RotateY(20); _medical3DControl.ObjectsContainer.Objects[0].RotateZ(10); //Set Remove Density Parameters _medical3DControl.ObjectsContainer.Objects[0].UpperThreshold = MaximumDensityValue / 2.5f; _medical3DControl.ObjectsContainer.Objects[0].LowerThreshold = MinimumDensityValue; _medical3DControl.ObjectsContainer.Objects[0].RemoveInterval = Medical3DRemoveIntervalType.InnerRange; _medical3DControl.ObjectsContainer.Objects[0].EnableThresholding = true; //Set Slab Parameters _medical3DControl.ObjectsContainer.Objects[0].Slab.SetValues(0.75f, -1.0f, 0.5f, -0.5f, 1.0f, -1.0f); _medical3DControl.ObjectsContainer.Objects[0].Slab.Enabled = true; string fileName =Path.Combine(LEAD_VARS.ImagesDir,@"Images\CT_PelvisState"); _medical3DControl.ObjectsContainer.Objects[0].SaveState(fileName); 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); } } static class LEAD_VARS { public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; } |
- When saving the object state, the following will be saved:
- Window Level
- Object Orientation
- Slab Parameters
- Remove Density values
- You can save the state for one object and then load it on another one.
- To load the state use the LoadState method.
- Saving a state normally means that engine will save the current view of the 3D volume so that when a user loads the same state at later time, it will display the object exactly the same way as when the user saved it. So, this should include rotation, scale, window/level, threshold values etc (i.e. the current properties of the object’s state) and it is specific to image set used for the volume.
Target Platforms: Microsoft .NET Framework 2.0, Windows 2000, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7