您的位置:首页 > 其它

WPF的Image控件使用BitmapImage的资源占用问题

2015-06-19 12:47 351 查看
在WPF中,想要使用Image控件,并将图片导入Image控件中,显示在界面上。因此可以通过BitmapImage作为Image控件的源。

因此,可以这样做:

BitmapImage bitmapImage = new BitmapImage(); //初始化BitmapImage类的一个新实例

Image image1 = new Image(); //定义一个Image控件

string strPath = "D:\\mImage.png";//图片所在的位置

bitmapImage.BeginInit(); //表示BitmapImage初始化开始

bitmapImage.UriSource = new Uri(strPath);//获取或设置BitmapImage的Uri源

bitmapImage.EndInit();//表示BitmapImage初始化结束

image1.Source = bitmapImage;//将image1控件的源指定为bitmapImage

按照上诉方法可以将图片显示到Image控件中,但是会存在问题,比如此时无法对显示的图片做其他操作,比如移动、重命名、删除等。就这好比windows操作系统中,无法对当前打开的word文档进行重命名、删除、移动等,因为资源正被占用。

解决方案:

将图片资源加载到缓存中,这样就不会造成资源的占用,便可以实现对Image控件加载图片的其他操作。

方法很简单,即在给BitmapImage指定Uri源的时候,增加语句:bitmapImage.CacheOption = BitmapCacheOption.Onload; 在加载时,将整个图像缓存到内存中。

代码修改为:

BitmapImage bitmapImage = new BitmapImage(); //初始化BitmapImage类的一个新实例

Image image1 = new Image(); //定义一个Image控件

string strPath = "D:\\mImage.png";//图片所在的位置

bitmapImage.BeginInit(); //表示BitmapImage初始化开始

bitmapImage.CacheOption = BitmapCacheOption.Onload;

bitmapImage.UriSource = new Uri(strPath);//获取或设置BitmapImage的Uri源

bitmapImage.EndInit();//表示BitmapImage初始化结束

image1.Source = bitmapImage;//将image1控件的源指定为bitmapImage
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: