Zoom In And Zoom Out an Image in WinRT (Windows Store)

Show in webframe

Take the following steps to start a project and to add some code that will load,display and zoom in/out an image into the LEADTOOLS WinRT Control.

  1. Start Visual Studio 2012
  2. Choose File->New->Project... from the menu.
  3. In the New Project dialog box, choose Visual C# and Windows Store as the project template, and choose Blank App (XAML) in the Templates List.
  4. Type the project name as ZoomIn_ZoomOut in the Project Name field, and then choose OK. If desired, type a new location for your project or select a directory using the Browse button, and then choose OK.
  5. In the Solution Explorer window, right-click on the References folder for the project and select Add Reference... from the context menu. In the Reference Manager dialog box, select Leadtools.Controls from the Windows=>Extension list.

    Browse to the <LEADTOOLS_INSTALLDIR>\Bin\WinRT\ folder (depending on your target platform), and select the following .WINMD files:


    • Leadtools.winmd
    • Leadtools.Kernel.winmd
    • Leadtools.Codecs.winmd
    • Leadtools.Codecs.Kernel.winmd
    • Leadtools.Codecs.Bmp.winmd
    • Leadtools.Codecs.Cmp.winmd
    • Leadtools.Codecs.Fax.winmd
    • Leadtools.Codecs.Gif.winmd
    • Leadtools.Codecs.J2k.winmd
    • Leadtools.Codecs.Png.winmd
    • Leadtools.Codecs.Tif.winmd
    • Leadtools.Dicom.winmd
    • Leadtools.Converters.winmd
    Click the Select button and then press the OK button to add the above references to the application.
  6. Open the MainPage.xaml file and copy the below XAML code into the editor:

    [XAML]

                <Page
                   x:Class="ZoomIn_ZoomOut.MainPage"
                   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                   xmlns:local="using:ZoomIn_ZoomOut"
                   xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                   xmlns:custom="using:Leadtools.Controls"
                   mc:Ignorable="d">
                                
                  <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
                      <StackPanel>
                         <Button x:Name="_loadButton" Click="_loadButton_Click">Load</Button>
                         <Button x:Name="_zoomIn" Click="_zoomIn_Click">Zoom In</Button>
                         <Button x:Name="_zoomOut" Click="_zoomOut_Click">Zoom Out</Button>
                         <TextBlock x:Name="_text"/>
                         <custom:RasterImageViewer x:Name="_viewer" Source="Assets/Ocr1.bmp" Width="500" Height="500" PropertyChanged="_viewer_PropertyChanged"/>
                      </StackPanel>
                   </Grid>
                </Page>
                                
                            
    
  7. Double-click on the "Package.appxmanifest" file. On the Declarations tab, add the "File Open Picker as a Supported Declaration. Also, check the "Supports any file type" checkbox.

  8. Switch to MainPage.xaml code view (right-click Page.xaml in the solution explorer then select View Code) and add the following lines at the beginning of the file:

    [C#]

                using Windows.Storage;
                using Windows.Storage.Pickers;
                using Leadtools;
                using Leadtools.Codecs;
                using Leadtools.Converters;
                                  
    
  9. Add the following code to the MainPage constructor:

                RasterSupport.Initialize(); // replace this with RasterSupport.SetLicense when you have a valid runtime license.
                _text.Text = string.Format("Current Scale Factor : {0}%", 100);  
                      
    
  10. Add the following class function:

    [C#]

                private async void _loadButton_Click(object sender, RoutedEventArgs e)
                {
                   FileOpenPicker openPicker = new FileOpenPicker();
                   openPicker.ViewMode = PickerViewMode.Thumbnail;
                   openPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
                   openPicker.FileTypeFilter.Add(".cmp");
                   openPicker.FileTypeFilter.Add(".jpg");
                   openPicker.FileTypeFilter.Add(".tif");
                  
                  StorageFile file = await openPicker.PickSingleFileAsync();
                  if (null != file)
                  {
                      try
                      {
                         //Open the file as a WinRT RandomAccessStream and create an ILeadStream from this RandomAccessStream
                         ILeadStream leadStream = LeadStreamFactory.Create(file);
                         using (IDisposable disposable = leadStream as IDisposable)
                         {
                            using (RasterCodecs codecs = new RasterCodecs())
                            {
                               _viewer.Image = await codecs.LoadAsync(leadStream);
                            }
                         }
                      }
                      catch (Exception exception)
                      {
                         string message = exception.Message;
                         RasterException rasterException = RasterException.FromHResult(exception.HResult);
                         if (rasterException != null)
                            message = rasterException.Message;
                            System.Diagnostics.Debug.WriteLine(message);
                      }
                   }
                }
                        
                private void _zoomIn_Click(object sender, RoutedEventArgs e)
                {
                   _viewer.ScaleFactor *= 1.2;
                }
                       
                private void _zoomOut_Click(object sender, RoutedEventArgs e)
                {
                   _viewer.ScaleFactor /= 1.2;
                }
                       
                private void _viewer_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
                {
                   if (string.Compare(e.PropertyName,"ScaleFactor") == 0)
                   {
                      _text.Text = string.Format("Current Scale Factor : {0:F2}%", _viewer.ScaleFactor * 100);  
                   }
                }
                       
                               
    
  11. 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.