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写法)相关推荐
- 关于WPF的ComboBox中Items太多而导致加载过慢的问题
[WFP疑难]关于WPF的ComboBox中Items太多而导致加载过慢的问题 ...
- android URI 和 UIL 图片加载问题
ImageLoader加载图片问题: UIL图片加载已经非常熟悉,已经知道的是采用的是两级缓存: 内存中和磁盘上 如果都没有则从网络下载. 缓存的依据: UIL根据图片的URI获取缓存在磁盘文件的MD ...
- (转)利用WPF的ListView进行大数据量异步加载
原文:http://www.cnblogs.com/scy251147/archive/2012/01/08/2305319.html 由于之前利用Winform的ListView进行大数据量加载的时 ...
- wpf首次项目开发技术总结wpf页面
对于初次面对这么一个曾未接触的wpf项目,我们的历程是艰辛的,但我们的收获是不菲的,就学术型的收获就已经比我在学校课堂的收获多很多啊!现在我技术总结在此,以便留作技术总结. 首先,我们在vs2010的 ...
- WPF加载程序集中字符串资源
WPF资源 WPF资源使用其实的也是resources格式嵌入资源,默认的资源名称为"应用程序名.g.resources",不过WPF资源使用的pack URI来访问资源. 添加图 ...
- WPF实现Map加载
WPF开发者QQ群: 340500857 欢迎转发.分享.点赞,谢谢大家~. 接着上一篇 效果预览: 一.MainWindow.xaml代码如下: <Window x:Class=" ...
- WPF 多点触摸开发[2]:WPF触摸的几个手势的执行顺序
原文:WPF 多点触摸开发[2]:WPF触摸的几个手势的执行顺序 前面我讲了在win7下使用模拟器,进行调试模拟多点触摸,其实际开发中这样也比较麻烦.. 要拿几个鼠标. 所以更多的人会 买个触摸套 套 ...
- 【无标题】C# WPF如何反射加载Geometry几何图形数据图标学习通http://www.bdgxy.com/
文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 表格制作excel教程h ...
- WPF 反射加载Geometry几何图形数据图标
原文链接:https://www.cnblogs.com/Stay627/p/14583581.html 相信大家在阅读WPF相关GitHub开源项目源码时都会看见一串串这种数据 这种Geometry ...
最新文章
- git 常用别名设置
- 结构体数组实现的简易学生信息管理系统
- 监听以太网(四) Packet32函数SDK
- 一文告诉你雾计算与云计算的区别及对物联网的价值!
- 【Java从入门到头秃专栏 】(一)学在Java语法之前
- 厦华电子:转型迎来新征程 打造大数据领军企业
- 从手工测试到自动化测试进阶,需要自学什么?去尝试年薪50W是个什么体验...
- 2019pro与air怎么选_MacBookAir 2020和MacBookPro 2019该选谁?超详细对比告诉你
- Android应用内存泄露分析以及优化方案
- 理解Cookie和Session的区别及使用
- editplus编辑c语言,使用EditPlus编程软件学习C/C++编程
- linux系统下王者荣耀,一日一歌一Linux之一:CentOS 8.1 王者荣耀
- 计算机二级软件excel打不开怎么办,excel文件打不开的9种情况和解决办法
- 微信小程序:页面有内容却不显示原因
- 移动MAS短信接口工具类
- 达内python第一次月考题目_第一次月考试卷分析
- WIN XP 开机正常,过了进度条之后黑屏
- SOTIF 预期功能安全ISO21448介绍、功能安全标准ISO26262 与若干安全标准的适用范围和开发流程映射
- 无刷直流电机MATLAB仿真,基于有感无感两种方式 无刷直流电机霍尔换相建模
- 经典法定K型归一化LPF设计学习记录
热门文章
- Python自动化--语言基础5--面向对象、迭代器、range和切片的区分
- Windows环境下通过Git来管理自己的Android代码
- 算法题11 字符串的所有对称子串
- Redis学习笔记1-Redis数据类型
- 集合习题之列出有限集合所有子集
- Mono for Android 对话框 倒计时
- 今天我注册博客园了,我很开心!
- [导入]源代码版本控制(二)
- java string fill_Java使用fill()数组填充的实现
- c语言支持默认参数吗,嵌入式C语言可以带“默认参数”的函数吗