←Select platform

SaveState Method

Summary

Saves the object status to a file.

Syntax

C#
VB
C++
public void SaveState(  
   string fileName 
) 
Public Sub SaveState( _ 
   ByVal fileName As String _ 
) 
public: 
void SaveState(  
   String^ fileName 
) 

Parameters

fileName
The file name for which the state data will be saved.

Remarks
  • 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.
Example

C#
VB
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.MedicalViewer 
Imports Leadtools.Medical3D 
 
<TestMethod> 
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 
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); 
 
        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"; 
} 

Requirements

Target Platforms

Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
Leadtools.Medical3D Assembly
Click or drag to resize