SpyGlass Property

Summary
Gets the class that contains the properties that control the spy glass style and shape.
Syntax
C#
VB
C++
public MedicalViewerSpyGlass SpyGlass { get; } 
  
Public ReadOnly Property SpyGlass As MedicalViewerSpyGlass 
            public: 
property MedicalViewerSpyGlass^ SpyGlass { 
   MedicalViewerSpyGlass^ get(); 
} 

Property Value

MedicalViewerSpyGlass class that contains the properties that control the spy glass style and shape.

Remarks
  • To use the spy glass tool, use the AddAction method to add the MedicalViewerActionType.SpyGlass action to the Medical Viewer Cell. Then use the SetAction method to associate the action with a mouse button.
  • The user must register the MedicalViewerBaseCell.SpyGlassStarted event to use the spy glass.
  • The spy glass is similar to the Magnify glass feature, the main difference here is that the spy glass works by sending a copy of the image through the event MedicalViewerBaseCell.SpyGlassStarted, the user can apply any effect on that copy, the spy glass then will display the copy as the user hovers the mouse over the original image.
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 MedicalViewerSpyGlassForm : Form 
{ 
   private MedicalViewer _medicalViewer; 
 
   void MedicalViewerLocalizer_SizeChanged(object sender, EventArgs e) 
   { 
      _medicalViewer.Size = new Size(this.ClientRectangle.Right, this.ClientRectangle.Bottom); 
   } 
 
   public MedicalViewerSpyGlassForm() 
   { 
      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.SpyGlass); 
 
      // 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.SpyGlass, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active); 
 
      cell.SpyGlassStarted += new EventHandler<MedicalViewerSpyGlassStartedEventArgs>(cell_SpyGlassStarted); 
 
      // adjust some spy glass properties. 
      cell.SpyGlass.PositionText = MedicalViewerSpyGlassTextType.Actual; 
      cell.SpyGlass.ZoomText = MedicalViewerSpyGlassTextType.Percentage; 
      cell.SpyGlass.ZoomOnScroll = true; 
 
      _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 cell_SpyGlassStarted(object sender, MedicalViewerSpyGlassStartedEventArgs e) 
   { 
      if (e.Image != null) 
      { 
         Leadtools.ImageProcessing.Color.InvertCommand invert = new Leadtools.ImageProcessing.Color.InvertCommand(); 
         invert.Run(e.Image); 
      } 
   } 
 
   void MedicalViewerLocalizer_FormClosing(object sender, FormClosingEventArgs e) 
   { 
   } 
 
 
   public MedicalViewer Viewer 
   { 
      get { return _medicalViewer; } 
   } 
} 
 
MedicalViewerSpyGlassForm GetMedicalViewerSpyGlassForm() 
{ 
   MessageBox.Show("Hold down Left click to show the spy glass, \n move the mouse while you hold the mouse button down to move the spy glass. \n scroll while holding the mouse down to zoom in or out"); 
   return new MedicalViewerSpyGlassForm(); 
} 
 
// 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 MedicalViewerSpyGlassExample() 
{ 
   MedicalViewerSpyGlassForm myForm = GetMedicalViewerSpyGlassForm(); 
   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 MedicalViewerSpyGlassForm : 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.SpyGlass) 
 
      ' 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.SpyGlass, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active) 
 
      AddHandler cell.SpyGlassStarted, AddressOf cell_SpyGlassStarted 
 
      ' adjust some spy glass properties. 
      cell.SpyGlass.PositionText = MedicalViewerSpyGlassTextType.Actual 
      cell.SpyGlass.ZoomText = MedicalViewerSpyGlassTextType.Percentage 
      cell.SpyGlass.ZoomOnScroll = True 
 
      _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 cell_SpyGlassStarted(ByVal sender As Object, ByVal e As MedicalViewerSpyGlassStartedEventArgs) 
      If Not e.Image Is Nothing Then 
         Dim invert As Leadtools.ImageProcessing.Color.InvertCommand = New Leadtools.ImageProcessing.Color.InvertCommand() 
         invert.Run(e.Image) 
      End If 
   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 GetMedicalViewerSpyGlassForm() As MedicalViewerSpyGlassForm 
   MessageBox.Show("Hold down Left click to show the spy glass, " & Constants.vbLf & " move the mouse while you hold the mouse button down to move the spy glass. " & Constants.vbLf & " scroll while holding the mouse down to zoom in or out") 
   Return New MedicalViewerSpyGlassForm() 
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. 
<TestMethod()> _ 
Public Sub MedicalViewerSpyGlassExample() 
   Dim myForm As MedicalViewerSpyGlassForm = GetMedicalViewerSpyGlassForm() 
   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.