title: UWP Create dynamic rectangle
body: <p>I'm new in UWP and my first Task is crop imagine, now I'm trying to find how can I create a dynamic rectangle to crop imagine 
  p.s. I'm sorry for the bad grammar.</p>
  
  <p>My program must have button to open the file, then on the screen must be  dynamic rectangle that user can change or move, and when user press "save" button image will cropping as rectangle size
  there is my C# code
  Thanks)</p>
  
  <pre><code>namespace Crop1
  {
      public sealed partial class MainPage : Page
      {
          public MainPage()
          {
              this.InitializeComponent();
          }
  
          SoftwareBitmap softwareBitmap;
          private async void OpenFile(object sender, RoutedEventArgs e)
          {
              FileOpenPicker fileOpenPicker = new FileOpenPicker();
              fileOpenPicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
              fileOpenPicker.FileTypeFilter.Add(".jpg");
              fileOpenPicker.ViewMode = PickerViewMode.Thumbnail;
  
              var inputFile = await fileOpenPicker.PickSingleFileAsync();
  
              if (inputFile == null)
              {
                  // The user cancelled the picking operation
                  return;
              }
  
              using (IRandomAccessStream stream = await inputFile.OpenAsync(FileAccessMode.Read))
              {
                  // Create the decoder from the stream
                  BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
  
                  // Get the SoftwareBitmap representation of the file
                  softwareBitmap = await decoder.GetSoftwareBitmapAsync();
              }
              if (softwareBitmap.BitmapPixelFormat != BitmapPixelFormat.Bgra8 ||
      softwareBitmap.BitmapAlphaMode == BitmapAlphaMode.Straight)
              {
                  softwareBitmap = SoftwareBitmap.Convert(softwareBitmap, BitmapPixelFormat.Bgra8, BitmapAlphaMode.Premultiplied);
              }
  
              var source = new SoftwareBitmapSource();
              await source.SetBitmapAsync(softwareBitmap);
  
              // Set the source of the Image control
              //imageControl.Source = source;
  
              p1rect1.Fill = new ImageBrush
              {
                  ImageSource = source
              };
          }
  
          private async void Save(object sender, RoutedEventArgs e)
          {
              FileSavePicker fileSavePicker = new FileSavePicker();
              fileSavePicker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
              fileSavePicker.FileTypeChoices.Add("JPEG files", new List&lt;string&gt;() { ".jpg"  , ".png"});
              fileSavePicker.SuggestedFileName = "image";
  
              var outputFile = await fileSavePicker.PickSaveFileAsync();
  
              if (outputFile == null)
              {
                  // The user cancelled the picking operation
                  return;
              }
              // SoftwareBitmap softwareBitmap;
              // BitmapDecoder decoder = await BitmapDecoder.CreateAsync(imageControl);
  
  
  
              SaveSoftwareBitmapToFile(softwareBitmap, outputFile);
  
          }
          private async void SaveSoftwareBitmapToFile(SoftwareBitmap softwareBitmap, StorageFile outputFile)
          {
              using (IRandomAccessStream stream = await outputFile.OpenAsync(FileAccessMode.ReadWrite))
              {
                  // Create an encoder with the desired format
                  BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream);
  
                  // Set the software bitmap
                  encoder.SetSoftwareBitmap(softwareBitmap);
  
                  //// Set additional encoding parameters, if needed
                  //encoder.BitmapTransform.ScaledWidth = 320;
                  //encoder.BitmapTransform.ScaledHeight = 240;
                 //  encoder.BitmapTransform.Rotation = Windows.Graphics.Imaging.BitmapRotation.Clockwise90Degrees;
                  encoder.BitmapTransform.InterpolationMode = BitmapInterpolationMode.Fant;
                  encoder.IsThumbnailGenerated = true;
  
                  try
                  {
                      await encoder.FlushAsync();
                  }
                  catch (Exception err)
                  {
                      switch (err.HResult)
                      {
                          case unchecked((int)0x88982F81): //WINCODEC_ERR_UNSUPPORTEDOPERATION
                                                           // If the encoder does not support writing a thumbnail, then try again
                                                           // but disable thumbnail generation.
                              encoder.IsThumbnailGenerated = false;
                              break;
                          default:
                              throw err;
                      }
                  }
  
                  if (encoder.IsThumbnailGenerated == false)
                  {
                      await encoder.FlushAsync();
                  }
  
  
              }
          }
      }
  }
  </code></pre>