LEADTOOLS Medical (Leadtools.MedicalViewer assembly)
LEAD Technologies, Inc

ShowSlabBoundaries Property

Example 





Gets or sets the value that determine whether to show the slab boundaries on the image.
Syntax
public bool ShowSlabBoundaries {get; set;}
'Declaration
 
Public Property ShowSlabBoundaries As Boolean
'Usage
 
Dim instance As MedicalViewerMPRCell
Dim value As Boolean
 
instance.ShowSlabBoundaries = value
 
value = instance.ShowSlabBoundaries
public bool ShowSlabBoundaries {get; set;}
 get_ShowSlabBoundaries();
set_ShowSlabBoundaries(value);
public:
property bool ShowSlabBoundaries {
   bool get();
   void set (    bool value);
}

Property Value

true to show the slab boundaries, false to hide the slab boundaries.
Remarks
To update the slab values manually, the user will have to update the Leadtools.Medical3D.Medical3DObject.Slab property using the source Leadtools.Medical3D.Medical3DContainer.
Example
 
Private Class MedicalViewerSlabForm : Inherits Form
    Private _medicalViewer As MedicalViewer
    Private _seriesManager As MedicalViewerSeriesManager
    Private Sub MedicalViewerSlabForm_SizeChanged(ByVal sender As Object, ByVal e As EventArgs)
        _medicalViewer.Size = New Size(Me.ClientRectangle.Right, Me.ClientRectangle.Bottom)
    End Sub

    Public Sub New(ByVal output As MedicalViewerSeriesManager)
        Dim _codecs As RasterCodecs = New RasterCodecs()

        AddHandler SizeChanged, AddressOf MedicalViewerSlabForm_SizeChanged

        ' Create the medical viewer and adjust the size and the location.
        _medicalViewer = New MedicalViewer(2, 2)
        _medicalViewer.Location = New Point(0, 0)
        _medicalViewer.Size = New Size(Me.ClientRectangle.Right, Me.ClientRectangle.Bottom)

        _seriesManager = output

        Dim index As Integer
        Dim image As RasterImage
        Dim count As Integer = output.Stacks(0).Items.Count
        Dim codecsInformation As CodecsImageInfo


        Dim AxialFrame As MedicalViewerMPRCell = New MedicalViewerMPRCell()
        Dim SagittalFrame As MedicalViewerMPRCell = New MedicalViewerMPRCell()
        Dim CoronalFrame As MedicalViewerMPRCell = New MedicalViewerMPRCell()

        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 = 50

        ' A create on a 3D control
        Dim _medical3DControl As Medical3DControl = New Medical3DControl()

        _medical3DControl.ObjectsContainer.Objects.Add(New Medical3DObject())
        _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, 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)

        ' create axial frame.
        AxialFrame.ShowMPRCrossHair = True
        AxialFrame.DistinguishMPRByColor = True
        AxialFrame.ShowSlabBoundaries = True
        AxialFrame.SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame)
        AxialFrame.AddAction(MedicalViewerActionType.Stack)
        AxialFrame.SetAction(MedicalViewerActionType.Stack, MedicalViewerMouseButtons.Wheel, MedicalViewerActionFlags.Active)

        ' create Sagittal frame.
        SagittalFrame.ShowMPRCrossHair = True
        SagittalFrame.DistinguishMPRByColor = True
        SagittalFrame.ShowSlabBoundaries = True
        SagittalFrame.SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame)
        SagittalFrame.AddAction(MedicalViewerActionType.Stack)
        SagittalFrame.SetAction(MedicalViewerActionType.Stack, MedicalViewerMouseButtons.Wheel, MedicalViewerActionFlags.Active)

        ' create coronal frame.
        CoronalFrame.ShowMPRCrossHair = True
        CoronalFrame.DistinguishMPRByColor = True
        CoronalFrame.ShowSlabBoundaries = True
        CoronalFrame.SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame)
        CoronalFrame.AddAction(MedicalViewerActionType.Stack)
        CoronalFrame.SetAction(MedicalViewerActionType.Stack, MedicalViewerMouseButtons.Wheel, MedicalViewerActionFlags.Active)

        ' attach the MPR cells to the 3D control.
        _medical3DControl.AxialFrame = AxialFrame
        _medical3DControl.SagittalFrame = SagittalFrame
        _medical3DControl.CoronalFrame = CoronalFrame

        _medicalViewer.AllowMultipleSelection = False

        _medicalViewer.Cells.Add(_medical3DControl)
        _medicalViewer.Cells.Add(AxialFrame)
        _medicalViewer.Cells.Add(SagittalFrame)
        _medicalViewer.Cells.Add(CoronalFrame)

        _medical3DControl.ObjectsContainer.Objects(0).Slab.Enabled = True
        _medical3DControl.ObjectsContainer.Objects(0).Slab.SetValues(-1, 0.5F, -1, 0.5F, -0.5F, 0.5F)


        Controls.Add(_medicalViewer)
        _medicalViewer.Dock = DockStyle.Fill
    End Sub

    Private Sub cell_Data3DRequested(ByVal sender As Object, ByVal e As MedicalViewerData3DRequestedEventArgs)
        e.Succeed = Medical3DEngine.Provide3DInformation(e)
    End Sub

    Private Sub cell_FramesRequested(ByVal sender As Object, ByVal e As MedicalViewerRequestedFramesInformationEventArgs)
        Dim cell As MedicalViewerMultiCell = CType(sender, MedicalViewerMultiCell)
        Dim _codecs As RasterCodecs = New RasterCodecs()
        Dim i As Integer
        Dim image As RasterImage
        Dim fileName As String

        If e.RequestedFramesIndexes.Length > 0 Then
            fileName = CStr(_seriesManager.Stacks(0).Items(e.RequestedFramesIndexes(0)).Data)
            image = _codecs.Load(fileName)
        Else
            Return
        End If

        i = 1
        Do While i < e.RequestedFramesIndexes.Length
            fileName = CStr(_seriesManager.Stacks(0).Items(e.RequestedFramesIndexes(i)).Data)
            image.AddPage(_codecs.Load(fileName))
            i += 1
        Loop

        cell.SetRequestedImage(image, e.RequestedFramesIndexes, MedicalViewerSetImageOptions.Insert)
    End Sub

    Public ReadOnly Property Viewer() As MedicalViewer
        Get
            Return _medicalViewer
        End Get
    End Property
End Class

Private Function GetMedicalViewerSlabForm() As MedicalViewerSlabForm
    Dim form As MedicalViewerSeriesManagerFrom = New MedicalViewerSeriesManagerFrom()
    Dim output As MedicalViewerSeriesManager = form.LoadJamesHead()

    Return New MedicalViewerSlabForm(output)
End Function

' This example changes the default window level value by decrease the width by 100. Then resets the images based on the new value.

Public Sub MedicalViewerSlabExample()
    Dim myForm As MedicalViewerSlabForm = GetMedicalViewerSlabForm()
    Dim medicalViewer As MedicalViewer = myForm.Viewer

    myForm.ShowDialog()
End Sub
class MedicalViewerSlabForm : Form
{
   private MedicalViewer _medicalViewer;
   private MedicalViewerSeriesManager _seriesManager;
   void MedicalViewerSlabForm_SizeChanged(object sender, EventArgs e)
   {
      _medicalViewer.Size = new Size(this.ClientRectangle.Right, this.ClientRectangle.Bottom);
   }

   public MedicalViewerSlabForm(MedicalViewerSeriesManager output)
   {
      RasterCodecs _codecs = new RasterCodecs();

      this.SizeChanged += new EventHandler(MedicalViewerSlabForm_SizeChanged);

      // Create the medical viewer and adjust the size and the location.
      _medicalViewer = new MedicalViewer(2, 2);
      _medicalViewer.Location = new Point(0, 0);
      _medicalViewer.Size = new Size(this.ClientRectangle.Right, this.ClientRectangle.Bottom);

      _seriesManager = output;

      int index;
      RasterImage image;
      int count = output.Stacks[0].Items.Count;
      CodecsImageInfo codecsInformation;


      MedicalViewerMPRCell AxialFrame = new MedicalViewerMPRCell();
      MedicalViewerMPRCell SagittalFrame = new MedicalViewerMPRCell();
      MedicalViewerMPRCell CoronalFrame = new MedicalViewerMPRCell();

      codecsInformation = _codecs.GetInformation((string)output.Stacks[0].Items[0].Data, true);


      int width = codecsInformation.Width;
      int height = codecsInformation.Height;
      int depth = 50;

      // A create on a 3D control
      Medical3DControl _medical3DControl = new Medical3DControl();

      _medical3DControl.ObjectsContainer.Objects.Add(new Medical3DObject());
      _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, 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);

      // create axial frame.
      AxialFrame.ShowMPRCrossHair = true;
      AxialFrame.DistinguishMPRByColor = true;
      AxialFrame.ShowSlabBoundaries = true;
      AxialFrame.SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame);
      AxialFrame.AddAction(MedicalViewerActionType.Stack);
      AxialFrame.SetAction(MedicalViewerActionType.Stack, MedicalViewerMouseButtons.Wheel, MedicalViewerActionFlags.Active);

      // create Sagittal frame.
      SagittalFrame.ShowMPRCrossHair = true;
      SagittalFrame.DistinguishMPRByColor = true;
      SagittalFrame.ShowSlabBoundaries = true;
      SagittalFrame.SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame);
      SagittalFrame.AddAction(MedicalViewerActionType.Stack);
      SagittalFrame.SetAction(MedicalViewerActionType.Stack, MedicalViewerMouseButtons.Wheel, MedicalViewerActionFlags.Active);

      // create coronal frame.
      CoronalFrame.ShowMPRCrossHair = true;
      CoronalFrame.DistinguishMPRByColor = true;
      CoronalFrame.ShowSlabBoundaries = true;
      CoronalFrame.SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame);
      CoronalFrame.AddAction(MedicalViewerActionType.Stack);
      CoronalFrame.SetAction(MedicalViewerActionType.Stack, MedicalViewerMouseButtons.Wheel, MedicalViewerActionFlags.Active);

      // attach the MPR cells to the 3D control.
      _medical3DControl.AxialFrame = AxialFrame;
      _medical3DControl.SagittalFrame = SagittalFrame;
      _medical3DControl.CoronalFrame = CoronalFrame;

      _medicalViewer.AllowMultipleSelection = false;

      _medicalViewer.Cells.Add(_medical3DControl);
      _medicalViewer.Cells.Add(AxialFrame);
      _medicalViewer.Cells.Add(SagittalFrame);
      _medicalViewer.Cells.Add(CoronalFrame);

      _medical3DControl.ObjectsContainer.Objects[0].Slab.Enabled = true;
      _medical3DControl.ObjectsContainer.Objects[0].Slab.SetValues(-1, 0.5f, -1, 0.5f, -0.5f, 0.5f);


      Controls.Add(_medicalViewer);
      _medicalViewer.Dock = DockStyle.Fill;
   }

   void cell_Data3DRequested(object sender, MedicalViewerData3DRequestedEventArgs e)
   {
      e.Succeed = Medical3DEngine.Provide3DInformation(e);
   }

   void cell_FramesRequested(object sender, MedicalViewerRequestedFramesInformationEventArgs e)
   {
      MedicalViewerMultiCell cell = (MedicalViewerMultiCell)(sender);
      RasterCodecs _codecs = new RasterCodecs();
      int i;
      RasterImage image;
      string fileName;

      if (e.RequestedFramesIndexes.Length > 0)
      {
         fileName = (string)(_seriesManager.Stacks[0].Items[e.RequestedFramesIndexes[0]].Data);
         image = _codecs.Load(fileName);
      }
      else
         return;

      for (i = 1; i < e.RequestedFramesIndexes.Length; i++)
      {
         fileName = (string)(_seriesManager.Stacks[0].Items[e.RequestedFramesIndexes[i]].Data);
         image.AddPage(_codecs.Load(fileName));
      }

      cell.SetRequestedImage(image, e.RequestedFramesIndexes, MedicalViewerSetImageOptions.Insert);
   }

   public MedicalViewer Viewer
   {
      get { return _medicalViewer; }
   }
}

MedicalViewerSlabForm GetMedicalViewerSlabForm()
{
   MedicalViewerSeriesManagerFrom form = new MedicalViewerSeriesManagerFrom();
   MedicalViewerSeriesManager output = form.LoadJamesHead();

   return new MedicalViewerSlabForm(output);
}

// This example changes the default window level value by decrease the width by 100. Then resets the images based on the new value.

public void MedicalViewerSlabExample()
{
   MedicalViewerSlabForm myForm = GetMedicalViewerSlabForm();
   MedicalViewer medicalViewer = myForm.Viewer;

   myForm.ShowDialog();
}
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

MedicalViewerMPRCell Class
MedicalViewerMPRCell Members

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.

Leadtools.MedicalViewer requires a Medical Imaging license and unlock key. For more information, refer to: Imaging Pro/Document/Medical Features