原文:wpfのuri(让你完全明白wpf的图片加载方式以及URI写法)

绝对 pack WPF URI

pack://application:,,,/是协议;“,,,”是“///”的变体

1.资源文件 — 本地程序集

Uri uri = new Uri("pack://application:,,,/ResourceFile.xaml", UriKind.Absolute);

子文件夹中的资源文件 — 本地程序集(资源文件在本地程序集的子文件夹)

Uri uri = new Uri("pack://application:,,,/Subfolder/ResourceFile.xaml", UriKind.Absolute);

2.资源文件 — 所引用的程序集(资源文件在别的程序集)

Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Absolute);

3.所引用的程序集的子文件夹中的资源文件(资源文件别的程序的子文件夹)

Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Absolute);

4.所引用的版本化程序集中的资源文件(版本化在中间加入版本信息)

Uri uri = new Uri("pack://application:,,,/ReferencedAssembly;v1.0.0.0;component/ResourceFile.xaml", UriKind.Absolute);

综上:路径前部分是”pack://application;,,,/程序集名字;”;后半部分”component/路径“”;合起来是一个绝对路径;如果是本地程序集,程序集名字和compoent可以省略(;也省略掉)

WPF URI内容文件

1.Uri uri = new Uri("pack://application:,,,/ContentFile.xaml", UriKind.Absolute);

2.子文件夹中的内容文件

Uri uri = new Uri("pack://application:,,,/Subfolder/ContentFile.xaml", UriKind.Absolute);

3.源站点文件

Uri uri = new Uri("pack://siteoforigin:,,,/SOOFile.xaml", UriKind.Absolute);

4.子文件夹中的源站点文件

Uri uri = new Uri("pack://siteoforigin:,,,/Subfolder/SOOFile.xaml", UriKind.Absolute);

相对 pack URI

1.WPF URI资源文件 — 本地程序集

Uri uri = new Uri("/ResourceFile.xaml", UriKind.Relative);

2.子文件夹中的资源文件 — 本地程序集

Uri uri = new Uri("/Subfolder/ResourceFile.xaml", UriKind.Relative);

3.资源文件 — 所引用的程序集

Uri uri = new Uri("/ReferencedAssembly;component/ResourceFile.xaml", UriKind.Relative);

4.子文件夹中的资源文件 — 所引用的程序集

Uri uri = new Uri("/ReferencedAssembly;component/Subfolder/ResourceFile.xaml", UriKind.Relative);

                                                                                                                                

内容文件

Uri uri = new Uri("/ContentFile.xaml", UriKind.Relative);

WPF URI子文件夹中的内容文件Uri uri = new Uri("/Subfolder/ContentFile.xaml", UriKind.Relative);

                                          特点:不用协议

一、加载本项目的图片 WPF引入了统一资源标识Uri(Unified Resource Identifier)来标识和访问资源。 其中较为常见的情况是用Uri加载图像。Uri表达式的一般形式为:协议+授权+路径 协议:pack:// 授权:有两种。一种用于访问编译时已经知道的文件,用application:/// 一种用于访问编译时不知道、运行时才知道的文件,用siteoforigin:///
一般用逗号代替斜杠,也就是改写作application:,,,和pack:,,, 路径:分为绝对路径和相对路径。一般选用相对路径,普适性更强
下面,我们举一个简单的例子: pack://application:,,,/images/my.jpg 当然,WPF默认Uri设置有pack://application:,,,,所以我们也可以直接将其写作:/images/my.jpg
后边写例子程序时,为了让读者更好的了解Uri,我们都采用完整的Uri写法。 下面在讲讲装载图片的两种方式,一种用XAML引用资源,一种用代码引用资源。
用XAML引用资源:

<Image Source="pack://application:,,,/images/my.jpg"/>

也可以这样

<Image Source="/images/my.jpg"/>

用代码引用资源:

Image img;
img.Source=new BitmapImage(new Uri("pack://application:,,,/images/my.jpg"),UriKind.Relative);

也可以直接使用代码中引用图片资源

image2.Source = new BitmapImage(new Uri("/images/my.jpg", UriKind.Relative));

二、WPF 调用资源图片

imagePath = "pack://application:,,,/Solution;component/Properties/../images/star/my.jpg";
imageBrush.ImageSource = new BitmapImage(new Uri(imagePath, UriKind.RelativeOrAbsolute));

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

<Image Source="pack://application:,,,/Skin;component/image/you.png" />

或者

<Image Source="/Skin;component/image/you.png" />

四、使用SiteOfOrigin

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

wpfのuri(让你完全明白wpf的图片加载方式以及URI写法)相关推荐

  1. 关于WPF的ComboBox中Items太多而导致加载过慢的问题

                                         [WFP疑难]关于WPF的ComboBox中Items太多而导致加载过慢的问题                         ...

  2. android URI 和 UIL 图片加载问题

    ImageLoader加载图片问题: UIL图片加载已经非常熟悉,已经知道的是采用的是两级缓存: 内存中和磁盘上 如果都没有则从网络下载. 缓存的依据: UIL根据图片的URI获取缓存在磁盘文件的MD ...

  3. (转)利用WPF的ListView进行大数据量异步加载

    原文:http://www.cnblogs.com/scy251147/archive/2012/01/08/2305319.html 由于之前利用Winform的ListView进行大数据量加载的时 ...

  4. wpf首次项目开发技术总结wpf页面

    对于初次面对这么一个曾未接触的wpf项目,我们的历程是艰辛的,但我们的收获是不菲的,就学术型的收获就已经比我在学校课堂的收获多很多啊!现在我技术总结在此,以便留作技术总结. 首先,我们在vs2010的 ...

  5. WPF加载程序集中字符串资源

    WPF资源 WPF资源使用其实的也是resources格式嵌入资源,默认的资源名称为"应用程序名.g.resources",不过WPF资源使用的pack URI来访问资源. 添加图 ...

  6. WPF实现Map加载

    WPF开发者QQ群: 340500857 欢迎转发.分享.点赞,谢谢大家~.   接着上一篇 效果预览: 一.MainWindow.xaml代码如下: <Window x:Class=" ...

  7. WPF 多点触摸开发[2]:WPF触摸的几个手势的执行顺序

    原文:WPF 多点触摸开发[2]:WPF触摸的几个手势的执行顺序 前面我讲了在win7下使用模拟器,进行调试模拟多点触摸,其实际开发中这样也比较麻烦.. 要拿几个鼠标. 所以更多的人会 买个触摸套 套 ...

  8. 【无标题】C# WPF如何反射加载Geometry几何图形数据图标学习通http://www.bdgxy.com/

    文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 表格制作excel教程h ...

  9. WPF 反射加载Geometry几何图形数据图标

    原文链接:https://www.cnblogs.com/Stay627/p/14583581.html 相信大家在阅读WPF相关GitHub开源项目源码时都会看见一串串这种数据 这种Geometry ...

最新文章

  1. git 常用别名设置
  2. 结构体数组实现的简易学生信息管理系统
  3. 监听以太网(四) Packet32函数SDK
  4. 一文告诉你雾计算与云计算的区别及对物联网的价值!
  5. 【Java从入门到头秃专栏 】(一)学在Java语法之前
  6. 厦华电子:转型迎来新征程 打造大数据领军企业
  7. 从手工测试到自动化测试进阶,需要自学什么?去尝试年薪50W是个什么体验...
  8. 2019pro与air怎么选_MacBookAir 2020和MacBookPro 2019该选谁?超详细对比告诉你
  9. Android应用内存泄露分析以及优化方案
  10. 理解Cookie和Session的区别及使用
  11. editplus编辑c语言,使用EditPlus编程软件学习C/C++编程
  12. linux系统下王者荣耀,一日一歌一Linux之一:CentOS 8.1 王者荣耀
  13. 计算机二级软件excel打不开怎么办,excel文件打不开的9种情况和解决办法
  14. 微信小程序:页面有内容却不显示原因
  15. 移动MAS短信接口工具类
  16. 达内python第一次月考题目_第一次月考试卷分析
  17. WIN XP 开机正常,过了进度条之后黑屏
  18. SOTIF 预期功能安全ISO21448介绍、功能安全标准ISO26262 与若干安全标准的适用范围和开发流程映射
  19. 无刷直流电机MATLAB仿真,基于有感无感两种方式 无刷直流电机霍尔换相建模
  20. 经典法定K型归一化LPF设计学习记录

热门文章

  1. Python自动化--语言基础5--面向对象、迭代器、range和切片的区分
  2. Windows环境下通过Git来管理自己的Android代码
  3. 算法题11 字符串的所有对称子串
  4. Redis学习笔记1-Redis数据类型
  5. 集合习题之列出有限集合所有子集
  6. Mono for Android 对话框 倒计时
  7. 今天我注册博客园了,我很开心!
  8. [导入]源代码版本控制(二)
  9. java string fill_Java使用fill()数组填充的实现
  10. c语言支持默认参数吗,嵌入式C语言可以带“默认参数”的函数吗