25

プログラミングに慣れていませんWindowsC#でアプリケーションを保存していますが、画像メモリの処理方法を理解しようとしています。私のアプリは非常にシンプルです:WinRTでBitmapImageおよびImageメモリを処理する方法

1)Windows.UI.Xaml.Media.Imaging.BitmapImageオブジェクトを使ってファイルからビットマップを参照し、それをWindows.UI.Xaml.Controls.Imageオブジェクトのソースとして使用します。私の場合、ディスク上のイメージは画面上に表示されているものよりも大きなディメンションを持っているため、システムによってスケーリングされています。

私の質問はどうですかWinRTは画像のメモリを扱うのですか? vmmapツールを使用しました。マップファイルセクションに画像ファイルのエントリがあります。私は、このファイルの生のバイトが完全にメモリにロードされていることを意味すると思います。これはJPGなので、これらのバイトはピクセルバイトにデコードする必要があります。私のテストでは、BitmapImageのUriSourceを設定しても、実際には何の処理も起こらないようですが、0ミリ秒かかり、その代わりに遅延読み込みが行われているようです。

したがって、次の質問があります。圧縮されていない非スケーリングされたピクセルデータの支配者はどれですか。画面上に描画される拡大縮小されたピクセルデータの支配者は何ですか?これを簡単に表示できるツールはありますか? Javaの世界では、私はEclipseのメモリアナライザツールを使用します。私はPerfViewを使ってみましたが、結果は私には意味をなさないので、ツールはパフォーマンスを分析するためのものでした。

UPDATE:チームはWindows Performance Toolkit議論BUILDカンファレンスで

http://msdn.microsoft.com/en-us/performance/cc825801.aspx

+2

この背後にはかなり険しいAPIがあります。[ここ](http://msdn.microsoft.com/en-us/library/windows/desktop/ee719902%28v=vs.85%29.aspx) –

+0

私はほとんどの画像ソースオブジェクトがInMemoryRandomAccessStreamかそれに類するものの背後にあると信じています。 PerfView/PerfMonを使ってもう少し詳しく調べてみることができます。 –

+1

私は正確に覚えていませんが、Imageコントロールはサイズ設定に基づいてソースを拡大縮小していませんか? I. xamlウィンドウにコントロールを配置し、イメージコントロールのフレームワーク要素は、イメージが実際には1920x1080のときに800x600と表示されますか? –

答えて

1

短い答えは「最適」最も可能性が高いです:私はので、私はここにリンクがあり、WPTは、メモリとパフォーマンスを分析するための最新かつ最高のツールであると信じている誰もがPerfViewのに言及聞いたことがありません。スマートなものではなく、さまざまなシステムがあります。 1つのハードウェアアクセラレーションでは、コア数、ディスプレイメモリ、ディスク速度、モニタのビット深度と解像度を考慮して、リストの内容を確認することもできます。

関連する問題