Using a Pan Window and Interactive Modes in Silverlight

SilverlightTutorials

Take the following steps to start a project and to add some code that will demonstrate the various interactive modes of the LEADTOOLS Silverlight Control and the Pan Viewer:

  1. Start Visual Studio .NET.
  2. Start with the project that you created in Loading and displaying an image in Silverlight.
  3. Open the Page.xaml file and copy the below XAML code into the editor:

    [XAML]

    <UserControl x:Class="Load_And_Display.MainPage" 
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
      xmlns:Leadtools_Windows_Controls="clr-namespace:Leadtools.Windows.Controls;assembly=Leadtools.Windows.Controls" 
      Width="800" Height="600"> 
      <Grid x:Name="LayoutRoot" Background="White"> 
        <Grid.ColumnDefinitions>        
            <ColumnDefinition Width="5*"/> 
            <ColumnDefinition Width="2*"/> 
        </Grid.ColumnDefinitions> 
                          
        <ScrollViewer VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled" Grid.Column="0"> 
            <StackPanel Orientation="Vertical" > 
                <Button Name="myButton" Content="Load" FontSize="30" Click="Button_Click" Height="40"></Button> 
                <Leadtools_Windows_Controls:RasterImageViewer x:Name="viewerControl" SizeMode="Normal" Height="550"></Leadtools_Windows_Controls:RasterImageViewer>  
            </StackPanel> 
        </ScrollViewer> 
                          
        <ScrollViewer VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled" Grid.Column="1"> 
            <StackPanel Orientation="Vertical" > 
                <TextBlock Text="Pan Window :"/> 
                <Leadtools_Windows_Controls:ImagePanViewer x:Name="_imagePanViewer" Width="150" Height="150" HorizontalAlignment="Left"></Leadtools_Windows_Controls:ImagePanViewer> 
                <TextBlock Text="Interactive Mode :"/> 
                <ComboBox Name="_cmbInteractiveMode" SelectedIndex="0" Width="200" HorizontalAlignment="Left" SelectionChanged="ComboBox_SelectionChanged"> 
                    <ComboBoxItem Content="None"/> 
                    <ComboBoxItem Content="Pan"/> 
                    <ComboBoxItem Content="Center At"/> 
                    <ComboBoxItem Content="Zoom To"/> 
                    <ComboBoxItem Content="Scale"/> 
                    <ComboBoxItem Content="Magnify Glass"/> 
                </ComboBox> 
            </StackPanel> 
        </ScrollViewer>     
      </Grid> 
    </UserControl> 

  4. Switch to Page.xaml code view (right-click Page.xaml in the solution explorer then select View Code) and add the following class function:

    C#
    VB
    Private Sub ComboBox_SelectionChanged(ByVal sender As Object, ByVal e As SelectionChangedEventArgs) 
      If _cmbInteractiveMode Is Nothing OrElse _cmbInteractiveMode.SelectedItem Is Nothing Then 
         Return 
      End If 
                     
      Dim item As String = (CType(IIf(TypeOf _cmbInteractiveMode.SelectedItem Is ComboBoxItem, _cmbInteractiveMode.SelectedItem, Nothing), ComboBoxItem)).Content.ToString() 
                     
      Select Case item 
         Case "Pan" 
            viewerControl.InteractiveMode = Leadtools.Windows.Controls.InteractiveMode.Pan 
                     
         Case "Center At" 
            viewerControl.InteractiveMode = Leadtools.Windows.Controls.InteractiveMode.CenterAt 
                     
         Case "Magnify Glass" 
            viewerControl.InteractiveMode = Leadtools.Windows.Controls.InteractiveMode.MagnifyGlass 
                     
         Case "Scale" 
            viewerControl.InteractiveMode = Leadtools.Windows.Controls.InteractiveMode.Scale 
                     
         Case "Zoom To" 
            viewerControl.InteractiveMode = Leadtools.Windows.Controls.InteractiveMode.ZoomTo 
                     
         Case Else 
            viewerControl.InteractiveMode = Leadtools.Windows.Controls.InteractiveMode.None 
      End Select 
    End Sub 
                      
         
    private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
      if (_cmbInteractiveMode == null ||   _cmbInteractiveMode.SelectedItem == null) 
         return; 
                     
      string item = (_cmbInteractiveMode.SelectedItem as ComboBoxItem).Content.ToString(); 
                     
      switch (item) 
      { 
         case "Pan": 
            viewerControl.InteractiveMode = Leadtools.Windows.Controls.InteractiveMode.Pan; 
            break; 
                     
         case "Center At": 
            viewerControl.InteractiveMode = Leadtools.Windows.Controls.InteractiveMode.CenterAt; 
            break; 
                     
         case "Magnify Glass": 
            viewerControl.InteractiveMode = Leadtools.Windows.Controls.InteractiveMode.MagnifyGlass; 
            break; 
                     
         case "Scale": 
            viewerControl.InteractiveMode = Leadtools.Windows.Controls.InteractiveMode.Scale; 
            break; 
                     
         case "Zoom To": 
            viewerControl.InteractiveMode = Leadtools.Windows.Controls.InteractiveMode.ZoomTo; 
            break; 
                     
         default: 
            viewerControl.InteractiveMode = Leadtools.Windows.Controls.InteractiveMode.None; 
            break; 
      } 
    } 
                      
         

  5. Update the Button_Click event as shown below:

    C#
    VB
    Private Sub Button_Click(ByVal sender As Object, ByVal e As RoutedEventArgs) 
      Try   
         Dim ofd As OpenFileDialog = New OpenFileDialog() 
         If ofd.ShowDialog() = True Then 
            Dim fileStream As FileStream = ofd.File.OpenRead() 
            Try 
               Dim codecs As RasterCodecs = New RasterCodecs() 
               viewerControl.Image = codecs.Load(fileStream) 
               _imagePanViewer.Source = viewerControl 
            Finally 
               fileStream.Dispose() 
            End Try 
         End If 
      Catch ex As Exception 
         MessageBox.Show(ex.Message) 
      End Try 
    End Sub 
                      
         
    private void Button_Click(object sender, RoutedEventArgs e) 
    { 
      try 
      { 
         OpenFileDialog ofd = new OpenFileDialog(); 
         if (ofd.ShowDialog() == true) 
         { 
            using (FileStream fileStream = ofd.File.OpenRead()) 
            { 
               RasterCodecs codecs = new RasterCodecs(); 
               viewerControl.Image = codecs.Load(fileStream); 
               _imagePanViewer.Source = viewerControl; 
            } 
         } 
      } 
      catch (Exception ex) 
      { 
         MessageBox.Show(ex.Message); 
      } 
    } 
                      
         

  6. Build, and Run the program to test it.

    Click the "Load" button, and select an image. NOTE: if you encounter an "Invalid File Format" or "Feature Not Supported" exception, please refer to the topic Invalid File Format/Feature Not Supported.

Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
LEADTOOLS Imaging, Medical, and Document
Click or drag to resize