2

XAML で ImageBrush として定義された背景を持つグリッドがあります。画像はかなり大きいです (約 1 MB、jpg)。ページに移動すると、最初に約 1 秒間黒い背景のみが表示され、しばらくすると背景画像が読み込まれます。見た目があまり良くありません。これを解決する方法は?たぶん、画像のキャッシュまたはメモリへの画像のロードですか?

編集:アプリがサポートする必要がある最高の解像度のため、画像は 2560x1600 です。画面解像度を検出して適切な画像を使用する方法はありますか? Windows 8 ブログで画像のスケーリングに関する記事も読みましたが、それがどのように機能するかの例は見つかりませんでした。アイデアは、1366x768 を 100% として、1920x1080 を 140% として、2560x1600 を 180% として背景があり、システムはユーザーの解像度に応じて適切なものを選択するということですか?

4

2 に答える 2

0

以前に MSDNで同様の質問をしましたが、普遍的に役立つ回答が得られませんでした。任意のページに移動してすぐに画像を表示したい場合は、ナビゲートする前に画像を読み込む必要があります。ちらつきを避けたい場合は、ブラシの Opacity を 0 に設定し、ImageBrush で ImageOpened イベントを待ってから、不透明度をアニメーション化して 1.0 に戻し、スムーズなフェードイン遷移を実現できます。

編集*

WinRT XAML Toolkitの最新バージョンには添付プロパティ (ImageExtensions.FadeInOnLoaded) があり、読み込み時に画像をフェードインするために使用できます。これにより、読み込み時に単に表示するよりもはるかに見栄えが良くなります。サンプルもあります。

複数の画像スケールを処理するには、SplashScreen.scale-100.png、SplashScreen.scale-140.png、SplashScreen.scale-180.png などの名前の画像が必要です。次に、画像ソースを SplashScreen.png に設定すると、右側の解像度の画像が自動的に取得されます。詳細については、このmsdn の記事を参照してください。

于 2012-05-07T20:39:24.513 に答える
0

1 mb の画像の代わりにサムネイルを生成できます

于 2012-05-07T19:49:39.607 に答える