在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