プログラミングに慣れていません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
この背後にはかなり険しいAPIがあります。[ここ](http://msdn.microsoft.com/en-us/library/windows/desktop/ee719902%28v=vs.85%29.aspx) –
私はほとんどの画像ソースオブジェクトがInMemoryRandomAccessStreamかそれに類するものの背後にあると信じています。 PerfView/PerfMonを使ってもう少し詳しく調べてみることができます。 –
私は正確に覚えていませんが、Imageコントロールはサイズ設定に基づいてソースを拡大縮小していませんか? I. xamlウィンドウにコントロールを配置し、イメージコントロールのフレームワーク要素は、イメージが実際には1920x1080のときに800x600と表示されますか? –