1

我正在开发我的第一个 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 属性,但没有运气。

更新:
这似乎适用于正常尺寸的图像。我最初尝试使用的图像非常小,并且似乎没有拉伸。也许这是一个错误,但我现在会解决这个问题。

4

2 回答 2

1

你试过了吗:

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

Stretch可以从NoneFill和中Uniform选择UniformToFill

于 2011-02-10T07:25:23.667 回答
1

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

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

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

于 2011-02-10T08:21:51.060 回答