2

从我所见,WPF 图像的源是一个 BitmapSource 对象,而资源图像被读取为位图。我很容易找到一种将图像从 Bitmap 格式转换为 BitmapSource 格式的方法,但我相信每次我需要图像时运行这种转换在性能和内存消耗方面都是昂贵的(位图本身是静态的,但我猜转换在内存中为 BitmapSource 分配一个新对象)。

我考虑为 BitmapSource 对象保存一个内存中的惰性缓存,这样我只需要为每个图像运行一次转换。但是,我很难相信这是解决此问题的正确方法。

应用程序的本质是数据随着时间的推移而扩展,而业务对象永远不会被释放。因此,只有在实现为这些静态图像保存静态资源的情况下,这个假设才会成立。

我将非常感谢这个问题的正确解决方案。

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 回答