2014-10-21 48 views
1

我正在Windows Phone 8.1中制作应用程序Visual Studio 2013(不是Windows Phone Store应用程序,只是Windows Phone应用程序)将从2张图像中完成全景。我几乎完成了我的应用程序。但最后,当我想裁剪结果时,我无法将矩形中的正确点发送到图像上。Windows Phone 8.1中的裁剪图像的问题

private void btnCrop_Click(object sender, EventArgs e){ 
      // Get the size of the source image captured by the camera 
      double originalImageWidth = wbPanoramica.PixelWidth; 
      double originalImageHeight = wbPanoramica.PixelHeight; 

      // Get the size of the image when it is displayed on the phone 
      double displayedWidth = VisorPicture.ActualWidth; 
      double displayedHeight = VisorPicture.ActualHeight; 

      // Calculate the ratio of the original image to the displayed image 
      double widthRatio = originalImageWidth/displayedWidth; 
      double heightRatio = originalImageHeight/displayedHeight; 

      // Calculate the offset of the cropped image. This is the distance, in pixels, to the top left corner 
      // of the cropping rectangle, multiplied by the image size ratio. 
      int xoffset = (int)(((p1.X < p2.X) ? p1.X : p2.X) * widthRatio); 
      int yoffset = (int)(((p1.Y < p2.Y) ? p1.Y : p2.X) * heightRatio); 
      int X1 = (int)(p1.X * widthRatio); 
      int Y1 = (int)(p1.Y * heightRatio); 



      var cropped = wbPanoramica.Crop(X1, Y1, yoffset, xoffset); 

      wbPanoramica = cropped; 
      // Set the source of the image control to the new cropped bitmap 
      VisorPicture.Source = wbPanoramica; 
      rect.Visibility = Visibility.Collapsed; 


      //Enable accept and reject buttons to save or discard current cropped image. 
      //Disable crop button until a new cropping region is selected. 
      btnAceptar.IsEnabled = true; 
      btnReject.IsEnabled = true; 
      btnCortar.IsEnabled = false; 

      //Instructional text 
      textStatus.Text = "Continue editando la imagen, acepte, o rechace el cambio"; 
     } 

回答

0

我得到了你的问题。它就像你没有得到确切的像素,而你裁剪对吗? 我也有类似的问题。我所做的是

wbPanoramica.Height=wbPanoramica.Height/2; 
wbPanoramica.Width=wbPanoramica.Width/2; 

虽然经过裁剪的像素,它传递这样

var cropped = wbPanoramica.Crop(X1*2, Y1*2, yoffset, xoffset); 

让我知道,如果这有助于