您的位置:首页 > 编程语言 > C#

Image控件的source属性设置显示图片,给出不包含在项目里面的图片不完善解决方案..

2014-03-31 16:44 471 查看
Image控件的source属性设置显示图片:

把图像包含进项目里面的,设置source属性

直接在xaml的image添加,可在属性source中添加

语句:Source="/TestRoutedEvent;component/image/happyface.jpg"
Source="/项目名称;component/文件夹名称(直接在项目文件夹中可忽略)/图片名称(有扩展名)"
 

在c#代码中设置source属性,必须为.png格式的图像

//图像路径
string path =string.Format("/TestRoutedEvent;component/image/happyface.png");
Uri uri = new Uri(path, UriKind.Absolute);
//新建图片,由于我只找到新建.png格式的图片,故图像数据源的图像格式只能是.png了
BitmapImage bi = newBitmapImage();
     bi.BeginInit();
     bi.UriSource = uri;
     bi.EndInit();
//设置source属性
     Image.Source = bi;
 
 
 
 
 

那图像没包含在项目里面怎么办呢?

下面给出解决方案,不过不是很完美,还能使用!!!

 

 

2.经过查阅,发现可以灵活的使用Uri加载图片,可实现不包含在项目里的图片给image.source赋值

Uri表达式的一般形式为:协议+授权+路径

     协议:pack://

     授权:有两种。一种用于访问编译时已经知道的文件(包含在项目里面),用application:///。一种用于访问编译时不知道、运行时才知道的文件(没有包含在项目里面),用siteoforigin:///。在加载图片时,如选用application:///,我们书写时候,一般用逗号代替斜杠,也就是可以改写作application:,,,。

     路径:分为绝对路径和相对路径。选用相对路径,普适性更强。

 

包含在项目里面:

          pack://application:,,,/images/my.jpg

     当然,WPF默认Uri设置有pack://application:,,,,所以我们也可以直接将其写作:

          /images/my.jpg
 

没有包含在项目里面:(注意这里用到了BitmapImage,故只能是.png格式图像)

string strPath = "pack://siteoforigin:,,,/image/my.png";
     Uri pathUri = new Uri(strPath,UriKind.Absolute);
     BitmapImage bi = new BitmapImage();
     bi.BeginInit();
     bi.UriSource = pathUri;
     bi.EndInit();
     moldImage.Source = bi;
因为这里新建路径时候UriKind=Absolute(绝对路径),测试了一下,这里的根目录是项目的根目录,故包含图像的image文件夹应该在程序运行的目录下(即debug目录下)

 

 

如果想要设置成某个盘的下的文件夹,如E盘下的image文件夹,可得以下路径字符串

string strPath ="pack://siteoforigin:,,,/E://image/my.png";
 
 
还有使用这个没有包含在项目里面图像作为数据源时候,图像名称最好是英文,不然会出现错误图像显示不了。。。并且图像格式要是.png,因为好像只能新建BitmapImage,.jpeg格式的图像好像新建不了,如果要使用.jpeg图像,那只能包含在项目里面了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# image.source wpf 控件
相关文章推荐