0

내 빙의 이미지 잠금을 위해 배경의 빙 화상을 사용하고 싶지만 이미지를 가져 오는 데 문제가 있습니다. 바람직하게는 1080p 장치에서1080p Windows Phone에서 잠금 화면 이미지가되도록 1920 * 1080p 사진 조정

이것은 오늘의 1080p 빙 이미지의 예입니다 : http://www.bing.com//az/hprichbg/rb/BeaverMeadow_EN-US12190942812_1920x1080.jpg. 그것은 1920 * 1080 사진입니다. 당연히

public static void SaveToJpeg(Stream stream) 
    { 
     using (IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      using (IsolatedStorageFileStream isostream = iso.CreateFile("lockscreen.jpg")) 
      { 
       try 
       { 
        BitmapImage bitmap = new BitmapImage(); 
        bitmap.SetSource(stream); 
        WriteableBitmap wb = new WriteableBitmap(bitmap); 

        // Cropping image so that only 1080 out of the 1920 horizontal pixels are used. 
        wb = CropImage(wb, 1080, 1920, 1080, 1080); 

        // 1080 * 1920 are the phone's dimesions. 
        Extensions.SaveJpeg(wb, isostream, 1080, 1920, 0, 100); 
        isostream.Close(); 
       } 
       catch(Exception e) 
       { 
       } 
      } 
     } 
    } 

    public static WriteableBitmap CropImage(WriteableBitmap source, int phoneWidth, int phoneHeight, 
                int width, int height) 
    { 

     // Based on the phone's width/height and image's width/height, will determine 
     // the correct x and y offsets. 
     int xOffset = 0, yOffset = 0; 

     if(phoneWidth >= source.PixelWidth) 
     { 
      xOffset = 0; 
     } 
     else 
     { 
      xOffset = source.PixelWidth - phoneWidth; 
      xOffset = xOffset/2 + xOffset/4; 
     } 

     if (phoneHeight >= height) 
     { 
      yOffset = 0; 
     } 
     else 
     { 
      yOffset = height - phoneHeight; 
      yOffset = yOffset/2; 
     } 


     var sourceWidth = source.PixelWidth; 

     // Get the resultant image as WriteableBitmap with specified size 
     var result = new WriteableBitmap(width, height); 

     // Create the array of bytes 
     for (var x = 0; x <= height - 1; x++) 
     { 
      var sourceIndex = xOffset + (yOffset + x) * sourceWidth; 
      var destinationIndex = x * width; 

      Array.Copy(source.Pixels, sourceIndex, result.Pixels, destinationIndex, width); 
     } 
     return result; 
    } 

: 코드입니다 제가 사용하고 사진 1080 * 1080 픽셀이며, 다음 1080 * 1920이있어 새로운 잠금 화면 이미지를 만들 수 있도록

내가하는 일은 작물이있다 , 빙 이미지의 높이가 (1920이 아닌) 1080 픽셀 주어진이 잠금 화면이 보이는 것입니다 같은 : 예, 잠금 화면 이미지에서 생성되는 사용자 정의 사용자 정의 컨트롤이

enter image description here

그리고, 그것의 그리드 배경 이미지는 fi로 뻗어있다. ll :

 <Grid.Background> 
      <ImageBrush 
       x:Name="Background" 
       Stretch="Fill"/> 
     </Grid.Background> 

화면을 우아하게 채우려면 빙 이미지를 얻으려면 어떻게해야합니까? 즉, 1080p 휴대 전화의 크기와 일치시키기 위해 원래 이미지의 크기를 과다하게 (픽셀 화)하고 싶지 않습니다.

업데이트 : 오늘의 빙 이미지 (즉, 1080p 휴대 전화의 잠금 화면의 정확한 크기)에 대한 대안 1080 x 1920 사진을 발견했습니다 : http://www.bing.com//az/hprichbg/rb/BeaverMeadow_EN-US12190942812_1080x1920.jpg.

그러나 근본적인 문제를 해결하는 것으로 보이지는 않습니다 (참고 :이 이미지에서 아무 것도 자르지 않고 치수가 완벽하기 때문에이 이미지를 그대로 사용합니다). 아래를 참조

enter image description here

답변

0

가 좋아,이 바보였다.

 <Grid.RowDefinitions> 
      <RowDefinition Height="auto"/> 
      <RowDefinition Height="0"/> 
      <RowDefinition Height="30"/> 
      <RowDefinition Height="160"/> 
      <RowDefinition Height="18"/> 
      <RowDefinition Height="1920"/> 
     </Grid.RowDefinitions> 

는 그것은 이전에 900

로 설정 : 잠금 화면 사용자 컨트롤의 XAML에서 난 그냥 그리드의 마지막 행의 높이를 증가했다