C#的WPF中的Image控件中载入图片的方法

C#WPF中的Image控件中载入图片的方法

——独立观察员 2014.06.23

最近在做学校短学期课程”软件工程-软件项目管理与开发实践”的作业,选择用WPF(C#)做客户端。这是我第一次用WPF,以前学过C#,用的是Winform。

简而言之就是界面上需要载入图片(动态),折腾了挺久的,终于成功,特此记录在此。

 

开始时,我按照 WPF–Image控件动态显示图片问题笔记 里写的去做:

Uri uri = new Uri(“/Images/” + curImage,UriKind.Relative);

BitmapImage bitmap = new BitmapImage(uri);

myImage.Source = bitmap;

但始终无法显示出图片。

 

花开两朵,各表一枝。在搜索过程中,我试了一下在XAML里调用图片,这个成功了,不过可能不够规范:

Source=”/OrderFood_WPF;component/bin/Debug/picture/1.jpg” />

其中OrderFood_WPF是项目名,整个/OrderFood_WPF;component就是项目所在路径,而我的图片在其下的/bin/Debug/picture路径内,由上图可见图片载入成功。

 

但是在.cs文件(代码文件)中动态地载入图片还是不行。浏览 WPF中Image控件的Source属性 文章时发现他是这样写的:

imageEditImage是一个Image控件,在后台代码中我想给它指定Source的属性。我先如下方式进行:

BitmapImage image = new BitmapImage(new Uri(strImagePath, UriKind.Absolute));

imageEditImage.Source = image;

strImagePath是图片的绝对路径。

第一篇文章里作者没有详细说明UriKind参数的作用,现在看到这个才恍然大悟,原来这个顾名思义,是指定Uri的类型的,可设为”相对路径”或”绝对路径”,那就好办了。

既然之前使用的是相对路径(Relative),但搞不清楚,那现在就用绝对路径(Absolute)吧:

 

//载入图片;

Uri uri = new Uri(System.Environment.CurrentDirectory + “\\” + food.food_pic_url, UriKind.Absolute);

BitmapImage bitmap = new BitmapImage(uri);

image.Source = bitmap;

 

其中System.Environment.CurrentDirectory用于获取当前目录(该进程从中启动的目录)的完全限定目录,即可执行文件(.exe)所在的路径,具体可参考——总结C#获取当前路径的7种方法

 

最后效果:

 

 

谢谢阅读!

打印本文

回复