CustomLookupTable Property

Summary
Gets the collection of custom lookup table that the user can assign to any frame (image) in the cell.
Syntax
C#
VB
C++
public MedicalViewerCollection<RasterColor[]> CustomLookupTable { get; } 
  
Public ReadOnly Property CustomLookupTable As MedicalViewerCollection(Of RasterColor()) 

Property Value

MedicalViewerCollection collection that contains arrays of a custom lookup tables that the user can assign to any frame or image in the cell.

Remarks
  • the custom lookup table can be of any size, the toolkit will resize the lookup table to fit the image.
  • After the user creates a Leadtools.RasterColor array and assign it to this collection, he use that created lookup table on any frame by setting the value of MedicalViewerSubCell.PaletteType to a value equal or larger than 100. The program will then subtract 100 from the number sent and use the result as an index in this collection. For example, setting the MedicalViewerSubCell.PaletteType to 100 will means that the frame will use the first lookup table in this collection, 101 means that the frame will use the second lookup table in this collection.
Example
C#
VB
using Leadtools; 
using Leadtools.Dicom; 
using Leadtools.Medical3D; 
using Leadtools.Codecs; 
using Leadtools.MedicalViewer; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Core; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Annotations.Engine; 
using Leadtools.Annotations.Designers; 
 
class MedicalViewerCustomLookupTableForm : Form 
{ 
   private MedicalViewer _medicalViewer; 
 
   void MedicalViewerLocalizer_SizeChanged(object sender, EventArgs e) 
   { 
      _medicalViewer.Size = new Size(this.ClientRectangle.Right, this.ClientRectangle.Bottom); 
   } 
 
   public MedicalViewerCustomLookupTableForm() 
   { 
      DicomEngine.Startup(); 
      RasterCodecs _codecs = new RasterCodecs(); 
 
      this.SizeChanged += new EventHandler(MedicalViewerLocalizer_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); 
 
      // Load an image and then add it to the control. 
      RasterImage _image = _codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "xa.dcm")); 
      MedicalViewerMultiCell cell = new MedicalViewerMultiCell(_image, true, 1, 1); 
 
      cell.FitImageToCell = false; 
 
      // add some actions that will be used to change the properties of the images inside the control. 
      cell.AddAction(MedicalViewerActionType.Scale); 
      cell.AddAction(MedicalViewerActionType.Offset); 
      cell.AddAction(MedicalViewerActionType.WindowLevel); 
      cell.AddAction(MedicalViewerActionType.Stack); 
 
      // 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.Scale, MedicalViewerMouseButtons.Middle, MedicalViewerActionFlags.Active); 
      cell.SetAction(MedicalViewerActionType.Offset, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active); 
      cell.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active); 
      cell.SetAction(MedicalViewerActionType.Stack, MedicalViewerMouseButtons.Wheel, MedicalViewerActionFlags.Active); 
 
      // Create a custom lookup table that will make the frames look inverted 
      RasterColor[] colors = new RasterColor[8000 /* or any number */]; 
      int index; 
 
      for (index = 0; index < colors.Length; index++) 
      { 
         colors[index].R = 
         colors[index].G = 
         colors[index].B = (byte)(255 - ((index * 255 + 128) / (colors.Length - 1))); 
      } 
 
      cell.CustomLookupTable.Add(colors); 
 
      foreach (MedicalViewerSubCell subCell in cell.SubCells) 
      { 
         subCell.PaletteType = (MedicalViewerPaletteType)100; // the index of the first custom lookup table in Cell.CustomLookupTable 
      } 
             
 
      _medicalViewer.Cells.Add(cell); 
      // 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); 
 
      cell.ScaleType = MedicalViewerScaleType.Dynamic; 
 
      Controls.Add(_medicalViewer); 
      _medicalViewer.Dock = DockStyle.Fill; 
      DicomEngine.Shutdown(); 
   } 
 
   void MedicalViewerLocalizer_FormClosing(object sender, FormClosingEventArgs e) 
   { 
   } 
 
 
   public MedicalViewer Viewer 
   { 
      get { return _medicalViewer; } 
   } 
} 
 
MedicalViewerCustomLookupTableForm GetMedicalViewerCustomLookupTableForm() 
{ 
   return new MedicalViewerCustomLookupTableForm(); 
} 
 
// This examples assigns a custom lookup table to the image. 
public void MedicalViewerCustomLookupTableExample() 
{ 
   MedicalViewerCustomLookupTableForm myForm = GetMedicalViewerCustomLookupTableForm(); 
   MedicalViewer medicalViewer = myForm.Viewer; 
 
   myForm.ShowDialog(); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images"; 
} 
Imports Leadtools 
Imports Leadtools.Dicom 
Imports Leadtools.Medical3D 
Imports Leadtools.Codecs 
Imports Leadtools.MedicalViewer 
Imports Leadtools.Annotations.Engine 
Imports Leadtools.Annotations.Designers 
Imports Leadtools.ImageProcessing.Core 
 
Private Class MedicalViewerCustomLookupTableForm : Inherits Form 
   Private _medicalViewer As MedicalViewer 
 
   Private Sub MedicalViewer_SizeChanged(ByVal sender As Object, ByVal e As EventArgs) 
      _medicalViewer.Size = New Size(Me.ClientRectangle.Right, Me.ClientRectangle.Bottom) 
   End Sub 
 
   Public Sub New() 
      DicomEngine.Startup() 
      Dim _codecs As RasterCodecs = New RasterCodecs() 
 
      AddHandler SizeChanged, AddressOf MedicalViewer_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) 
 
      ' Load an image and then add it to the control. 
      Dim _image As RasterImage = _codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "xa.dcm")) 
      Dim cell As MedicalViewerMultiCell = New MedicalViewerMultiCell(_image, True, 1, 1) 
 
      cell.FitImageToCell = False 
 
      ' add some actions that will be used to change the properties of the images inside the control. 
      cell.AddAction(MedicalViewerActionType.Scale) 
      cell.AddAction(MedicalViewerActionType.Offset) 
      cell.AddAction(MedicalViewerActionType.WindowLevel) 
      cell.AddAction(MedicalViewerActionType.Stack) 
 
      ' 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.Scale, MedicalViewerMouseButtons.Middle, MedicalViewerActionFlags.Active) 
      cell.SetAction(MedicalViewerActionType.Offset, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active) 
      cell.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active) 
      cell.SetAction(MedicalViewerActionType.Stack, MedicalViewerMouseButtons.Wheel, MedicalViewerActionFlags.Active) 
 
      ' Create a custom lookup table that will make the frames look inverted 
      ' the value set here (8000) is random, you can choose any number 
      Dim colors As RasterColor() = New RasterColor(7999) {} 
      Dim index As Integer 
 
      Dim lutValue As Byte 
      index = 0 
      Do While index < colors.Length 
         lutValue = CByte(255 - ((index * 255 + 128) / (colors.Length - 1))) 
         colors(index).R = lutValue 
         colors(index).G = lutValue 
         colors(index).B = lutValue 
 
         index += 1 
      Loop 
 
      cell.CustomLookupTable.Add(colors) 
 
      For Each subCell As MedicalViewerSubCell In cell.SubCells 
         subCell.PaletteType = CType(100, MedicalViewerPaletteType) ' the index of the first custom lookup table in Cell.CustomLookupTable 
      Next subCell 
 
 
      _medicalViewer.Cells.Add(cell) 
      ' 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) 
 
      cell.ScaleType = MedicalViewerScaleType.Dynamic 
 
      Controls.Add(_medicalViewer) 
      _medicalViewer.Dock = DockStyle.Fill 
      DicomEngine.Shutdown() 
   End Sub 
 
   Private Sub MedicalViewerLocalizer_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) 
   End Sub 
 
 
   Public ReadOnly Property Viewer() As MedicalViewer 
      Get 
         Return _medicalViewer 
      End Get 
   End Property 
End Class 
 
Private Function GetMedicalViewerCustomLookupTableForm() As MedicalViewerCustomLookupTableForm 
   Return New MedicalViewerCustomLookupTableForm() 
End Function 
 
' This examples assigns a custom lookup table to the image. 
<TestMethod()> _ 
Public Sub MedicalViewerCustomLookupTableExample() 
   Dim myForm As MedicalViewerCustomLookupTableForm = GetMedicalViewerCustomLookupTableForm() 
   Dim medicalViewer As MedicalViewer = myForm.Viewer 
 
   myForm.ShowDialog() 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images" 
End Class 
Requirements

Target Platforms

Help Version 21.0.2021.6.30
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.MedicalViewer Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.