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

前の回答が示唆するように、のStretchプロパティを使用ImageBrushして、フレームワークにサイズ変更を実行させることができます。詳しく説明するには:

  • Stretch.Fill: このオプションは、必要なスペースに合わせて画像を水平方向および垂直方向にサイズ変更します。その結果、画像がいずれかまたは両方の方向に押しつぶされたり引き伸ばされたりする可能性があります。
  • Stretch.Uniform: このオプションは、画像の縦横比を維持しながら、ソース画像に応じて画像のサイズを水平または垂直に変更します。このオプションを使用すると、空きスペースを確保することができます。
  • Stretch.UniformToFill: 前のオプションと同様に、このオプションは画像の縦横比を維持しますが、利用可能なすべてのスペースが埋められるようにします。これにより空白がなくなりますが、画像の一部がトリミングされる場合があります。

UniformToFill要件 (個人的には、この状況に最も適していると思います) とソース イメージの典型的なサイズに基づいて選択する必要があります。

于 2011-02-10T08:21:51.060 に答える
1

試しましたか:

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

、、からStretch選択できます。NoneFillUniformUniformToFill

于 2011-02-10T07:25:23.667 に答える