我正在开发我的第一个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属性而没有运气。
更新
这似乎适用于正常尺寸的图像。我最初尝试使用的图像非常小,看起来不会伸展。也许这是一个错误,但我现在要解决这个问题。
答案 0 :(得分:1)
你试过了吗?
var brush = new ImageBrush() {
ImageSource = new BitmapImage(new Uri(_group.photo_url, UriKind.Absolute)),
Stretch = Stretch.UniformToFill
};
groupPanorama.Background = brush;
Stretch
可以从None
,Fill
,Uniform
和UniformToFill
中选择。
答案 1 :(得分:1)
如前面的答案所示,您可以使用Stretch
的{{1}}属性来让框架为您调整大小。详细说明:
ImageBrush
:此选项会水平和垂直调整图像大小以适应所需的空间,这可能会导致图像被压扁或在任一方向或两个方向拉伸。Stretch.Fill
:此选项将根据源图像水平或垂直调整图像大小,同时保持图像的纵横比。如果使用此选项,仍可能有空格。Stretch.Uniform
:与上一个选项一样,此选项可维护图像的纵横比,但可确保填充所有可用空间。这样可以防止任何空白区域,但可能会裁剪部分图像。您需要根据自己的要求做出选择(我个人认为Stretch.UniformToFill
最适合这种情况)和源图像的典型尺寸。