Using a Pan Window and Interactive Modes in Silverlight

Show in webframe
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:

    [Visual Basic]

    [Visual Basic]
                 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
                 
    

    [C#]

    [C#]
                 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:

    [Visual Basic]

    [Visual Basic]
                 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
                 
    

    [C#]

    [C#]
                 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 and "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
© 2006-2014 All Rights Reserved. LEAD Technologies, Inc.