2011-02-10 22 views
1

我正在开发我的第一个WP7应用程序,现在我正在探索全景控制的世界。 我已经从REST服务加载了一个对象,并且已经将全景的背景设置为该对象中的图像url。从全景背景的URL调整图像

var brush = new ImageBrush() { ImageSource = new BitmapImage(new Uri(_group.photo_url, UriKind.Absolute)) }; 
groupPanorama.Background = brush; 

我的问题是,图像是在服务器上的任意的尺寸和这种情况下最终被压扁(水平)和瓷砖,甚至没有水平填充所述屏幕的宽度。

我假设我需要重新调整大小,以控制支持的尺寸,但我不知道如何去做这件事。我认为这是一个相当普遍的任务。

非常感谢!

编辑:

包括剪断,它的XAML的。漂亮的通用的:

<!--LayoutRoot contains the root grid where all other page content is placed--> 
<Grid x:Name="LayoutRoot"> 
    <controls:Panorama Name="groupPanorama" Title="" SelectionChanged="groupPanorama_SelectionChanged"> 

     <!--Panorama item one--> 
     <controls:PanoramaItem Header="Main"> 
      <Grid/> 
     </controls:PanoramaItem> 

我想我应该注意到我已经尝试了各种Stretch属性的ImageBrush已经没有运气。

更新:
这似乎与正常大小的图像一起使用。我最初尝试这样做的图像非常小,看起来并不舒展。也许这是一个错误,但我现在要解决这个问题。

回答

1

正如前面的答案所示,您可以使用ImageBrushStretch属性来获取框架来为您调整大小。为了详细说明:

  • Stretch.Fill:此选项将水平和垂直调整图像以适应所需的空间,这可能导致图像中被压扁或在一个或两个方向上拉伸。
  • Stretch.Uniform:此选项将根据源图像水平或垂直调整图像大小,同时保持图像的高宽比。如果您使用此选项,仍然可能有空的空间。
  • Stretch.UniformToFill:与上一个选项一样,此选项保持图像的高宽比,但确保填充所有可用空间。这将防止任何空白空间,但图像的一部分可能会被裁剪。

您需要根据您的要求作出选择(我个人认为UniformToFill最适合这种情况)以及源图像的典型尺寸。

+0

我已经试过Stretch属性,但没有运气。我已经添加了一个屏幕截图的链接,以防你看到过类似的东西。 – earthling 2011-02-10 19:54:38

1

没有ü尝试:

var brush = new ImageBrush() { 
       ImageSource = new BitmapImage(new Uri(_group.photo_url, UriKind.Absolute)), 
       Stretch = Stretch.UniformToFill 
      }; 
groupPanorama.Background = brush; 

Stretch可以从NoneFillUniformUniformToFill选择。

+0

我试过Stretch属性,没有运气。我已经添加了一个屏幕截图的链接,以防你看到过类似的东西。 – earthling 2011-02-10 19:50:04