在WPF中使用资源图像

时间:2010-11-02 13:34:44

标签: wpf performance resources bitmap bitmapsource

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

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

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

我非常感谢解决此问题的正确解决方案。

1 个答案:

答案 0 :(得分:1)

我不确定我明白你的意思,但你可以像这样使用资源中的Image 如果您有一个名为“B1.png”的Image资源,并为其设置了“Build Action”,那么您可以在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;