wpf 调用图片路径及resource和content生成操作说明

 

在项目中增加两张图片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)中添加一个定制特性,该程序集记录文件是否存在及其相对位置。

 

一、加载本项目的图片
WPF引入了统一资源标识Uri(Unified Resource Identifier)来标识和访问资源。
其中较为常见的情况是用Uri加载图像。Uri表达式的一般形式为:协议+授权+路径
协议:pack://
授权:有两种。一种用于访问编译时已经知道的文件,用application:///
一种用于访问编译时不知道、运行时才知道的文件,用siteoforigin:///
一般用逗号代替斜杠,也就是改写作application:,,,和pack:,,,
路径:分为绝对路径和相对路径。一般选用相对路径,普适性更强

用XAML引用资源:

"pack://application:,,,/images/1.jpg"/>

 也可以这样

"/images/1.jpg"/>

pack://application:,,,/images/1.jpg表示当前项目的资源。它是pack://application:,,,/DllName;Component/images/1.jpg的简写。将DllName替换成其他程序集,就可以访问其他程序集的资源。

二、WPF引用外部项目资源的方法
WPF中如果你使用的资源文件不是本程序集的,是另外的程序集,就可以这样做:
1.引用要用的程序集,pack://application:,,,/程序集名称;component/路径 ,其中pack://application:,,,可以省略
示例:

"pack://application:,,,/Skin;component/images/1.jpg" />

 或者

"/Skin;component/images/1.jpg" />


三、使用SiteOfOrigin

imgContent.Source = new BitmapImage(new Uri("pack://SiteOfOrigin:,,,/images/2.jpg"));

表示从部署位置访问文件。

这种方式不仅可以访问网站或应用程序运行目录下的Content资源文件,而且还可以访问以及独立与项目无关的文件夹中的文件或者说是完全松散的文件。完全松散的文件指那些没有添加到项目中,只是拷贝在程序目录中的文件,应用程序根本不知道它的存在。

 

 

 

参考网站:

https://www.cnblogs.com/sntetwt/p/5402098.html

https://blog.csdn.net/feiying008/article/details/16845693

 

 

 

 

 

 

你可能感兴趣的:(#,WPF)