Error processing SSI file
LEADTOOLS Medical (Leadtools.MedicalViewer assembly)

Show in webframe

VirtualImage Property






Gets the RasterCollection assigned to the cell.
Syntax
public RasterCollection<MedicalViewerVirtualImage> VirtualImage {get;}
'Declaration   Public ReadOnly Property VirtualImage As RasterCollection(Of MedicalViewerVirtualImage)
'Usage   Dim instance As MedicalViewerCell Dim value As RasterCollection(Of MedicalViewerVirtualImage)   value = instance.VirtualImage

Property Value

The RasterCollection.
Example
Copy Code  
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.MedicalViewer

Private Class MedicalViewerForm : Inherits Form
   Private _medicalViewer As MedicalViewer
   Public label As Label
   Private Sub MedicalViewerForm_SizeChanged(ByVal sender As Object, ByVal e As EventArgs)
      _medicalViewer.Size = New Size(Me.ClientRectangle.Right, Me.ClientRectangle.Bottom)
   End Sub

   Public Sub New()
      Dim _codecs As RasterCodecs = New RasterCodecs()
      Dim _image As RasterImage

      AddHandler SizeChanged, AddressOf MedicalViewerForm_SizeChanged

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

      ' Load an image and then add it to the control.
      '_image = _codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "xa.dcm");
      Dim cell As MedicalViewerMultiCell = New MedicalViewerMultiCell(Nothing, True, 1, 1)
      _medicalViewer.Cells.Add(cell)

      ' add some actions that will be used to change the properties of the images inside the control.
      cell.AddAction(MedicalViewerActionType.WindowLevel)
      cell.AddAction(MedicalViewerActionType.Alpha)
      cell.AddAction(MedicalViewerActionType.Offset)

      ' assign the added actions to a mouse button, meaning that when the user clicks and drags the mouse button, the associated action will be activated.
      cell.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active)
      cell.SetAction(MedicalViewerActionType.Alpha, MedicalViewerMouseButtons.Middle, MedicalViewerActionFlags.Active)
      cell.SetAction(MedicalViewerActionType.Offset, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active)

      cell.Rows = 1
      cell.Columns = 1
      cell.FitImageToCell = True

      ' adjust some properties of the cell and add some tags.
      _medicalViewer.Cells(0).SetTag(2, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.UserData, "EX. ID 230-36-5448")
      _medicalViewer.Cells(0).SetTag(4, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame)
      _medicalViewer.Cells(0).SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Scale)
      _medicalViewer.Cells(0).SetTag(2, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.WindowLevelData)
      _medicalViewer.Cells(0).SetTag(1, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.FieldOfView)


      ' Load another image and then add it to the control.
      _image = _codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "mr.dcm"))
      _medicalViewer.Cells.Add(New MedicalViewerMultiCell(_image, True, 2, 2))

      ' add some actions that will be used to change the properties of the images inside the control.
      _medicalViewer.Cells(1).AddAction(MedicalViewerActionType.WindowLevel)
      _medicalViewer.Cells(1).AddAction(MedicalViewerActionType.Alpha)
      _medicalViewer.Cells(1).AddAction(MedicalViewerActionType.Offset)
      _medicalViewer.Cells(1).AddAction(MedicalViewerActionType.RectangleRegion)

      ' assign the added actions to a mouse button, meaning that when the user clicks and drags the mouse button, the associated action will be activated.
      _medicalViewer.Cells(1).SetAction(MedicalViewerActionType.RectangleRegion, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active)
      _medicalViewer.Cells(1).SetAction(MedicalViewerActionType.Alpha, MedicalViewerMouseButtons.Middle, MedicalViewerActionFlags.Active)
      _medicalViewer.Cells(1).SetAction(MedicalViewerActionType.Offset, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active)

      ' adjust some properties of the cell and add some tags.
      _medicalViewer.Cells(1).SetTag(2, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.UserData, "EX. ID 230-36-5448")
      _medicalViewer.Cells(1).SetTag(4, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame)
      _medicalViewer.Cells(1).SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Scale)
      _medicalViewer.Cells(1).SetTag(2, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.WindowLevelData)
      _medicalViewer.Cells(1).SetTag(1, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.FieldOfView)

      label = New Label()
      label.Location = New Point(0, Me.ClientRectangle.Bottom - 10)
      label.Size = New Size(Me.ClientRectangle.Right, 10)
      label.Text = "Here the statistical information will appear"

      Controls.Add(_medicalViewer)
      _medicalViewer.Dock = DockStyle.Fill
   End Sub
   Public ReadOnly Property Viewer() As MedicalViewer
      Get
         Return _medicalViewer
      End Get
   End Property
End Class

Private Function GetMedicalControl() As MedicalViewerForm
   Return New MedicalViewerForm()
End Function

' This example shows how to use the low memory usage feature to display a medical image with multiple pages. it will also invert all the bitmap to show the invert function works even if the bitmap is not loaded yet.
<TestMethod()> _
Public Sub MedicalViewerLowMemoryUsageExample()
   Dim myForm As MedicalViewerForm = GetMedicalControl()
   Dim medicalViewer As MedicalViewer = myForm.Viewer
   Dim cell As MedicalViewerMultiCell = CType(medicalViewer.Cells(0), MedicalViewerMultiCell)


   Dim codecs As RasterCodecs = New RasterCodecs()
   Dim i As Integer = 0
   Dim count As Integer


   Dim info As CodecsImageInfo
   Dim fileName As String = Path.Combine(LEAD_VARS.ImagesDir, "xa.dcm")
   info = codecs.GetInformation(fileName, True)
   count = info.TotalPages
   Dim a As MedicalViewerImageInformation() = New MedicalViewerImageInformation(count - 1) {}

   i = 0
   Do While i < count
      info = codecs.GetInformation(fileName, True, i + 1)
      a(i) = New MedicalViewerImageInformation()
      a(i).ImageHeight = info.Height
      a(i).ImageWidth = info.Width
      a(i).XResolution = info.XResolution
      a(i).YResolution = info.YResolution
      i += 1
   Loop

   AddHandler cell.ActiveSubCellChanged, AddressOf medicalViewer_ActiveSubCellChanged1
   AddHandler cell.FramesRequested, AddressOf medicalViewer_FramesRequested
   cell.EnableLowMemoryUsage(2, count, a)
   myForm.ShowDialog()
End Sub

Private Sub medicalViewer_ActiveSubCellChanged1(ByVal sender As Object, ByVal e As MedicalViewerActiveSubCellChangedEventArgs)
   Dim imageInformation As String = ""
   Dim cell As MedicalViewerMultiCell = CType(sender, MedicalViewerMultiCell)

   If cell.VirtualImage(e.SubCellIndex).ImageExist Then
      imageInformation = "Image bit per pixel = " & cell.VirtualImage(e.SubCellIndex).Image.BitsPerPixel.ToString()
   End If

   CType(cell.ParentViewer.Parent, MedicalViewerForm).label.Text = imageInformation & " HasRegion = " & cell.VirtualImage(e.SubCellIndex).HasRegion
End Sub

Private Sub medicalViewer_FramesRequested(ByVal sender As Object, ByVal e As MedicalViewerRequestedFramesInformationEventArgs)
   Dim cell As MedicalViewerMultiCell = CType(sender, MedicalViewerMultiCell)
   Dim fileName As String = Path.Combine(LEAD_VARS.ImagesDir, "xa.dcm")
   Dim _codecs As RasterCodecs = New RasterCodecs()
   Dim i As Integer
   Dim b As RasterImage

   If e.RequestedFramesIndexes.Length > 0 Then
      b = _codecs.Load(fileName, 0, CodecsLoadByteOrder.BgrOrGray, e.RequestedFramesIndexes(0) + 1, e.RequestedFramesIndexes(0) + 1)
   Else
      Return
   End If

   i = 1
   Do While i < e.RequestedFramesIndexes.Length
      b.AddPage(_codecs.Load(fileName, 0, CodecsLoadByteOrder.BgrOrGray, e.RequestedFramesIndexes(i) + 1, e.RequestedFramesIndexes(i) + 1))
      i += 1
   Loop

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


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;

class MedicalViewerForm : Form
{
   private MedicalViewer _medicalViewer;
   public Label label;
   void MedicalViewerForm_SizeChanged(object sender, EventArgs e)
   {
      _medicalViewer.Size = new Size(this.ClientRectangle.Right, this.ClientRectangle.Bottom);
   }

   public MedicalViewerForm()
   {
      RasterCodecs _codecs = new RasterCodecs();
      RasterImage _image;

      this.SizeChanged += new EventHandler(MedicalViewerForm_SizeChanged);

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

      // Load an image and then add it to the control.
      //_image = _codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "xa.dcm");
      MedicalViewerMultiCell cell = new MedicalViewerMultiCell(null, true, 1, 1);
      _medicalViewer.Cells.Add(cell);

      // add some actions that will be used to change the properties of the images inside the control.
      cell.AddAction(MedicalViewerActionType.WindowLevel);
      cell.AddAction(MedicalViewerActionType.Alpha);
      cell.AddAction(MedicalViewerActionType.Offset);

      // assign the added actions to a mouse button, meaning that when the user clicks and drags the mouse button, the associated action will be activated.
      cell.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active);
      cell.SetAction(MedicalViewerActionType.Alpha, MedicalViewerMouseButtons.Middle, MedicalViewerActionFlags.Active);
      cell.SetAction(MedicalViewerActionType.Offset, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active);

      cell.Rows = 1;
      cell.Columns = 1;
      cell.FitImageToCell = true;

      // adjust some properties of the cell and add some tags.
      _medicalViewer.Cells[0].SetTag(2, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.UserData, "EX. ID 230-36-5448");
      _medicalViewer.Cells[0].SetTag(4, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame);
      _medicalViewer.Cells[0].SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Scale);
      _medicalViewer.Cells[0].SetTag(2, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.WindowLevelData);
      _medicalViewer.Cells[0].SetTag(1, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.FieldOfView);


      // Load another image and then add it to the control.
      _image = _codecs.Load(Path.Combine(LEAD_VARS.ImagesDir,"mr.dcm"));
      _medicalViewer.Cells.Add(new MedicalViewerMultiCell(_image, true, 2, 2));

      // add some actions that will be used to change the properties of the images inside the control.
      _medicalViewer.Cells[1].AddAction(MedicalViewerActionType.WindowLevel);
      _medicalViewer.Cells[1].AddAction(MedicalViewerActionType.Alpha);
      _medicalViewer.Cells[1].AddAction(MedicalViewerActionType.Offset);
      _medicalViewer.Cells[1].AddAction(MedicalViewerActionType.RectangleRegion);

      // assign the added actions to a mouse button, meaning that when the user clicks and drags the mouse button, the associated action will be activated.
      _medicalViewer.Cells[1].SetAction(MedicalViewerActionType.RectangleRegion, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active);
      _medicalViewer.Cells[1].SetAction(MedicalViewerActionType.Alpha, MedicalViewerMouseButtons.Middle, MedicalViewerActionFlags.Active);
      _medicalViewer.Cells[1].SetAction(MedicalViewerActionType.Offset, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active);

      // adjust some properties of the cell and add some tags.
      _medicalViewer.Cells[1].SetTag(2, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.UserData, "EX. ID 230-36-5448");
      _medicalViewer.Cells[1].SetTag(4, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame);
      _medicalViewer.Cells[1].SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Scale);
      _medicalViewer.Cells[1].SetTag(2, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.WindowLevelData);
      _medicalViewer.Cells[1].SetTag(1, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.FieldOfView);

      label = new Label();
      label.Location = new Point(0, this.ClientRectangle.Bottom - 10);
      label.Size = new Size(this.ClientRectangle.Right, 10);
      label.Text = "Here the statistical information will appear";

      Controls.Add(_medicalViewer);
      _medicalViewer.Dock = DockStyle.Fill;
   }
   public MedicalViewer Viewer
   {
      get { return _medicalViewer; }
   }
}

MedicalViewerForm GetMedicalControl()
{
   return new MedicalViewerForm();
}

// This example shows how to use the low memory usage feature to display a medical image with multiple pages. it will also invert all the bitmap to show the invert function works even if the bitmap is not loaded yet.
[TestMethod]
public void MedicalViewerLowMemoryUsageExample()
{
   MedicalViewerForm myForm = GetMedicalControl();
   MedicalViewer medicalViewer = myForm.Viewer;
   MedicalViewerMultiCell cell = (MedicalViewerMultiCell)(medicalViewer.Cells[0]);


   RasterCodecs codecs = new RasterCodecs();
   int i = 0;
   int count;


   CodecsImageInfo info;
   string fileName = Path.Combine(LEAD_VARS.ImagesDir,"xa.dcm");
   info = codecs.GetInformation(fileName, true);
   count = info.TotalPages;
   MedicalViewerImageInformation[] a = new MedicalViewerImageInformation[count];

   for (i = 0; i < count; i++)
   {
      info = codecs.GetInformation(fileName, true, i + 1);
      a[i] = new MedicalViewerImageInformation();
      a[i].ImageHeight = info.Height;
      a[i].ImageWidth = info.Width;
      a[i].XResolution = info.XResolution;
      a[i].YResolution = info.YResolution;
   }

   cell.ActiveSubCellChanged += new EventHandler<MedicalViewerActiveSubCellChangedEventArgs>(medicalViewer_ActiveSubCellChanged1);
   cell.FramesRequested += new EventHandler<MedicalViewerRequestedFramesInformationEventArgs>(medicalViewer_FramesRequested);
   cell.EnableLowMemoryUsage(2, count, a);
   myForm.ShowDialog();
}

void medicalViewer_ActiveSubCellChanged1(object sender, MedicalViewerActiveSubCellChangedEventArgs e)
{
   string imageInformation = "";
   MedicalViewerMultiCell cell = (MedicalViewerMultiCell)sender;

   if (cell.VirtualImage[e.SubCellIndex].ImageExist)
   {
      imageInformation = "Image bit per pixel = " + cell.VirtualImage[e.SubCellIndex].Image.BitsPerPixel.ToString();
   }

   ((MedicalViewerForm)(cell.ParentViewer.Parent)).label.Text = imageInformation + " HasRegion = " + cell.VirtualImage[e.SubCellIndex].HasRegion;
}

void medicalViewer_FramesRequested(object sender, MedicalViewerRequestedFramesInformationEventArgs e)
{
   MedicalViewerMultiCell cell = (MedicalViewerMultiCell)(sender);
   string fileName =Path.Combine(LEAD_VARS.ImagesDir,"xa.dcm");
   RasterCodecs _codecs = new RasterCodecs();
   int i;
   RasterImage b;

   if (e.RequestedFramesIndexes.Length > 0)
   {
      b = _codecs.Load(fileName, 0, CodecsLoadByteOrder.BgrOrGray, e.RequestedFramesIndexes[0] + 1, e.RequestedFramesIndexes[0] + 1);
   }
   else
      return;

   for (i = 1; i < e.RequestedFramesIndexes.Length; i++)
   {
      b.AddPage(_codecs.Load(fileName, 0, CodecsLoadByteOrder.BgrOrGray, e.RequestedFramesIndexes[i] + 1, e.RequestedFramesIndexes[i] + 1));
   }

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


static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
Requirements

Target Platforms

See Also

Reference

MedicalViewerCell Class
MedicalViewerCell Members

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