2

私が見たところ、WPF イメージのソースは BitmapSource オブジェクトですが、Resources イメージはビットマップとして読み取られます。画像を Bitmap 形式から BitmapSource 形式に変換する方法は簡単に見つかりましたが、画像が必要になるたびにこの変換を実行すると、パフォーマンスとメモリ消費の点でコストがかかると思います (ビットマップ自体は静的ですが、変換により、BitmapSource のメモリに新しいオブジェクトが割り当てられます)。

BitmapSource オブジェクト用にインメモリの遅延キャッシュを保持することを考えました。そうすれば、画像ごとに 1 回だけ変換を実行する必要があります。ただし、これがこの問題の適切な解決策であるとは信じがたいです。

アプリケーションの性質上、データは時間とともに拡張され、ビジネス オブジェクトは破棄されません。したがって、この仮定は、実装がこれらの静的イメージの静的リソースを保持する場合にのみ保持されます。

この問題の適切な解決策に感謝します。

4

1 に答える 1

2

意味がわかりませんが、このようなリソースからの画像を使用できます。
「B1.png」という名前のイメージリソースがあり、「ビルドアクション」を「リソース」に設定した場合、このようにxamlで使用できます。

<Image Name="c_image" Source="/YourAssemblyName;component/Resources/B1.png" />

そしてこのようなコードビハインドで

Image img = new Image();
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit(); 
bitmapImage.UriSource = new Uri("pack://application:,,,/YourAssemblyName;component/Resources/B1.png"); 
bitmapImage.EndInit(); 
img.Source = bitmapImage;
于 2010-11-02T14:01:29.917 に答える