CustomLookupTable Property

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

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#
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:\LEADTOOLS23\Resources\Images"; 
} 
Requirements

Target Platforms

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

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