WPF后台给Image添加路径

转载 2012年03月22日 09:44:04
在项目中增加两张图片Content.jpg和Resource.jpg,分别将其生成操作属性设置为Content和Resource。
      在界面中增加两个Image控件ImgContent和ImgResource,在XAML中分别设置Source路径为Content.jpg和Resource.jpg。运行后ImgResource能正常显示图片,但是ImgContent控件无显示。将Content.jpg图片拷贝至应用程序的Debug目录中,ImgContent控件可显示图片。
      生成操作设置为Resource,生成的时候资源将添加到程序集中。可以尝试将原有的图片删除,图片正常显示。将原有图片用新图片替换,仍显示原有图片。只有选择重新生成操作才能更新图片。
     生成操作设置为Content,并不会添加至程序集,而且只有把资源放置在程序运行目录才能访问到资源。程序运行目录调试时是Debug目录,安装后就是程序的安装目录。与直接把资源放置在程序运行目录不同的是,添加Content资源文件,会向程序集(AssemblyAssociatedContentFile)中添加一个定制特性,该程序集记录文件是否存在及其相对位置。我发现VS2008有一个小Bug,在解决方案管理器中将Content.jpg改名为Con.jpg,Bug目录下的图片也做相应的改变。此时编译器报错:文件Con.jpg不是项目的一部分或其“Build Action”属性未设置为“Resource”。但是按F5运行,生成成功并正常显示。可见在改变Content资源的时候,程序集中的定制特性没有做相应的变化。
     删除XAML中的Source属性,在后台为两个图片控件设置Source属性。有如下三种方式。  
第一种
imgContent.Source
= new BitmapImage(new Uri("Content.jpg", UriKind.Relative));
imgResource.Source
= new BitmapImage(new Uri("Resource.jpg", UriKind.Relative));

   

第二种
imgContent.Source
= new BitmapImage(new Uri("pack://application:,,,/Content.jpg"));
imgResource.Source
= new BitmapImage(new Uri("pack://application:,,,/Resource.jpg"));

第三种
imgContent.Source
= new BitmapImage(new Uri("pack://SiteOfOrigin:,,,/Content.jpg"));

      第一种和第二种都可以访问相对路径的Resource和Content资源。第三种方式可以访问网站运行目录下的Content资源文件以及完全松散的文件。完全松散的文件指那些没有添加到项目中,只是拷贝在程序目录中的文件。应用程序根本不知道它的存在。
     pack://application:,,,/Content.jpg表示当前项目的资源。它是pack://application:,,,/DllName;Component/Content.jpg的简写。将DllName替换成其他程序集,就可以访问其他程序集的资源。
     pack://SiteOfOrigin:,,,/Content.jpg表示从部署位置访问文件。
     pack URI格式是XML文件规范的一部分,具体格式如下 pack://packageURI/partPath。PackageURI实际上是在URI中放一个URI,它是把反斜杠都变成了逗号。packageURI可以志向一个XPS文档,例如file : /// c: /Document . xps会被编码为file:...c:,Document.xps。在WPF程序中有两种URI系统是特别处理的:
     siteOfOrigin:/// 编码后siteOfOrigin:,,,
     application:///   编码后application:,,,
  3个逗号其实是反斜杠编码过来的。

WPF代码设置Image控件Source

在XAML中设置Image Source很简单,直接在该Image.Source节点赋值Uri路径即可,而用C#代码实现时,虽然思路是一样的,不过还是有一些区别,具体如下: Image img=new...
  • u011193665
  • u011193665
  • 2013年08月29日 17:47
  • 3800

WPF 后台C#设置控件背景图片

 以前的程序中有做过,当时只是记得uri很长一大段就没怎么记。今天有人问了也就写下来。   这是一个Button,设置了Background后的效果。 前台的设置比较方便 XAML:...
  • huyu107
  • huyu107
  • 2015年04月22日 10:53
  • 10833

WPF中Image控件的Source属性

imageEditImage是一个Image控件,在后台代码中我想给它指定Source的属性。我先如下方式进行: BitmapImage image = new BitmapImage(new Ur...
  • swarb
  • swarb
  • 2012年11月28日 10:27
  • 3888

WPF中更改Image控件的source(使用相对路径)

绝对路径:        BitmapImage imagetemp = new BitmapImage(new Uri("E:\\Work\\Demo2.bmp", UriKind.Absol...
  • cdjcong
  • cdjcong
  • 2013年01月10日 20:08
  • 12289

WPF 中资源路径的问题

WPF 中资源路径的问题 分类: .net WPF2011-12-26 21:31 2460人阅读 评论(1) 收藏 举报 wpfactionschemebuildoutputst...
  • Metal1
  • Metal1
  • 2014年11月26日 12:03
  • 2702

WPF中Image控件Source属性的相对路径和绝对路径问题(经验总结)

  • 2013年04月04日 16:42
  • 15KB
  • 下载

在WPF中添加一张图片

想在XAML中使用一张图片,得先将其添加到工程中,才能
  • wangjinyang_123
  • wangjinyang_123
  • 2014年05月29日 10:47
  • 3921

WPF中使用Image控件上传图片的两种方式

最近在做WPF的一个小东西,需要做一个上传图片的功能。由于本人刚接触到WPF,做起来显得有点笨拙。通过两天的查阅资料勉强实现了这个功能。通常情况下上传图片后有两种保存方式:一是直接将图片保存至数据库;...
  • bbxylqf126com
  • bbxylqf126com
  • 2014年06月03日 17:22
  • 2793

WPF中使用Image控件显示图片

WPF Image 控件的一点简单使用
  • chuangand
  • chuangand
  • 2015年08月27日 17:46
  • 19347

WPF加载相对路径的图片的解决方法

相对路径: 在项目中添加一个文件夹UserHeadFace ,在文件夹下添加一个default.jpg的图片,打开图片文件的属性,将“复制到输出目录”选中“始终复制”,将“生成操作”选择为“内容...
  • yulongguiziyao
  • yulongguiziyao
  • 2014年05月06日 15:12
  • 2369
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WPF后台给Image添加路径
举报原因:
原因补充:

(最多只允许输入30个字)