从全景背景的网址调整图像大小

时间:2011-02-10 01:01:20

标签: image xaml resize windows-phone panorama-control

我正在开发我的第一个WP7应用程序,现在我正在探索全景控制的世界。 我已经从REST服务加载了一个对象,并且我将全景图的背景设置为该对象中的图像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>

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

更新
这似乎适用于正常尺寸的图像。我最初尝试使用的图像非常小,看起来不会伸展。也许这是一个错误,但我现在要解决这个问题。

2 个答案:

答案 0 :(得分:1)

你试过了吗?

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

Stretch可以从NoneFillUniformUniformToFill中选择。

答案 1 :(得分:1)

如前面的答案所示,您可以使用Stretch的{​​{1}}属性来让框架为您调整大小。详细说明:

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

您需要根据自己的要求做出选择(我个人认为Stretch.UniformToFill最适合这种情况)和源图像的典型尺寸。