2

UI に表示された後、BitmapImage のソースは自動的にリリースされますか?

BitmapImage が Image コントロールに一度表示された後、再度表示するのに約 300 ミリ秒かかることがわかりました。その遅延の間、画面には何も描画されません。XPerf を使用したプロファイリングは、デコード操作を示しています。画像は既に表示されているため、デコードは必要ありません。

(ところで、これは Windows 8 では起こらなかったことを誓いますが、それを証明することはできません)

編集 - その他のプロファイリング...

1 回の実行で、250 ミリ秒の遅延は、デコード用の 120 ミリ秒、レンダー ターゲットの塗りつぶし用の 100 ミリ秒、および dwm が画面に配置するための 30 ミリ秒に分割されます。おそらく、イメージ コントロールによって解放されているのは、レンダー ターゲットのメモリでしょうか?

編集 -

Image コントロールの Source に新しく作成された BitmapImage が与えられると、そのイメージはすぐに UI に表示されます。以前に表示された BitmapImage が与えられると、何も表示されない ~300ms があります。XPerf でプロファイリングすると、これらの状況の主な違いは、後者ではデコード手順が必要になることです。

Image コントロールがビットマップで行っていることを盗聴できることを期待して、BitmapSource のプロキシを作成しました。これはうまくいきませんでした。Image コントロールは、ユーザーに要求するインターフェイス (ImageSource) 以外のインターフェイスを介して画像データにアクセスしているように見えます。

4

0 に答える 0