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

    在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




你可能感兴趣的:(image,C#,WPF,资源占用,bitmapimage)