Silverlight2 现在支持的Image格式有jpg和png,部分png编码也不支持,同时有些png在xaml的design预览中不可见,但运行时可见。请看XAML markup中两行代码的异同:
<StackPanel Background="White" Orientation="Vertical">
        <Image x:Name="blue" Source="/images/blue.png" Stretch="None"/>
        <Image x:Name="green" Source="images/green.png" Stretch="None" />
</StackPanel>

反斜杠和没有反斜杠?有没有什么区别呢?如图所示,名称为Resource测试示例解决方案资源管理器以及运行效果:以反斜杠开头的blue图片需要放在ClientBin目录下的相应文件夹里;不以反斜杠开头的green图片应该放在Resource目录下的相应文件夹里。这样才可正确引用,否则会发生ImageError。

为什么?两者都是相对路径,到底反斜杠带来了什么区别呢?反斜杠开头的相对路径,代表的相对位置是应用程序运行的根目录,即.xap压缩包内,若在这其中寻找不到要引用的文件,则相对路径的回退机制(fallback mechanism )自动在在.xap所在的目录,本例即为ClientBin目录中寻找加以引用。两个位置都没有,才会发生错误。不以"/"开头,则代表的相对位置是引用该图片的XAML文件所在的目录,本例即page.xaml文件所在的Resource目录。

那么究竟选择哪种方式呢?把xap文件重命名为zip文件,解压之,再用reflector反编译其中的dll文件,发现其包含了green图片,却没有blue图片。其实也很明显,blue所在的images文件夹与.xap同级,自然不会包含在内。由此可知,不以反斜杠开头的green图片嵌入到Silverlight程序中的xap文件直接下载到客户端,而blue图片则按需索取(on-demand),当显示时再去下载。当数据量较大时,不以反斜杠开头的方式加载程序的时间就过长,用户体验不好,以"/"开头自然就无此无虑,不过以反斜杠开头的话,在xaml中设计预览看不到,只有程序运行才可以看到。(若为了预览,可先从ClienBin那里复制一份放在page.xaml同级目录下供设计使用,程序发布时予以删除。)
         
除了在XAML中直接确定Image的Source URI,当然也可以在code-behind中确定,此时反斜杠的用法和XAML中相通。
C#:Image img = new Image();
img.Source = new BitmapImage(new Uri("test.jpg", UriKind.Relative));      //page.xaml所在目录下
//img.Source = new BitmapImage(new Uri("/test.jpg", UriKind.Relative)); //.xap所在目录下

话说要是使用诸如http://www.liongg.net/test.jpg之类绝对URI就没反斜杠什么事了。在代码中还可以利用Application.Current.Host.Source.AbsolutePath等方法,我试验下了,发觉太麻烦还没意思,不再多管。

再深入一点,甚至图片放在与page.xaml同级的文件夹下,一样可以使用反斜杠进行引用。只需要在相应图片的属性里,把Build Action选择为"Content"即可,不过该图片还是被放到.xap压缩包里了,这是后话,参见《Sivlerlight Resource 概览》。

原文链接:http://hi.baidu.com/liongg/blog/item/b91a495494e34152564e00b4.html

转载于:https://www.cnblogs.com/sunzhiyue/archive/2010/06/11/1756228.html

Silverlight 图片路径问题相关推荐

  1. vue引入图片路径的三种主要方法

    1.在js代码里面 或者 html里面用"v-bind:"或":属性名"绑定路径的时候使用 require('@/assets/home/imgName.png ...

  2. tomcat 设定自定义图片路径

    1.问题 平常图片路径都是在项目目录下存放,都是ip地址+端口号+项目名+图片路径,因为项目需要要把图片从tomcat中分离出来,并且设置可以通过自定义地址访问自定义图片路径. 2.解决 在 tomc ...

  3. python opencv 得到图片路径image_path的宽wide、高heigh和深度deep

    python opencv 得到图片路径image_path的宽wide.高heigh和深度deep 图片路径是:'1.jpg' 下面是具体代码: import cv2 #得到图片路径image_pa ...

  4. vue样式 引入图片_详解Vue.js中引入图片路径的几种方式

    vue --version 3.6.3 记录总结一下的Vue中引入图片路径的几种书写方式 vue中静态资源的引入机制 Vue.js关于静态资源的官方文档 静态资源可以通过两种方式进行处理: 在 Jav ...

  5. uni 根目录路径_如何解决uniapp图片路径错误问题

    uniapp图片路径错误的解决办法:1.在根目录"manifest.json"中配置h5下的"publicPath":2.在h5配置中运行的基础路径进行配置即可 ...

  6. map遍历react中img图片路径出错

    原来我的方法是 const lineBottoms = [{title: '社保代缴',img: '../images/productIntroduce/u1178.png',},{title: '工 ...

  7. 小程序加载本地图片路径问题

    第一种图片路径:icon图片文件夹和pages文件夹同级 路径1 第二种图片路径:图片文件夹在pages文件夹内 路径2 第三种tabbar图片路径: 路径3 总结:主要看是否同级,../代表一级 转 ...

  8. ASP.NET中的图片路径问题

    ASP.NET中的图片路径问题,相信大家都遇到过,而且很烦.比如,我们的图片路径是在根目录\images\下,在主页面我们想用里面的图片,在用户控件中我们也想用那个目录下的图片,而用户控件往往我们会把 ...

  9. 记一次discuz修改首页图片路径问题

    1.找到图片路径拼装文件 首先打开根目录下的template目录找到首页文件 打开后找到图片列表的拼装位置 // 链接示例: <!--{eval $imagelistkey = getforum ...

  10. Python语言学习:利用python获取当前/上级/上上级目录路径(获取路径下的最后叶目录的文件名、合并两个不同路径下图片文件名等目录/路径案例、正确加载图片路径)之详细攻略

    Python语言学习:利用python获取当前/上级/上上级目录路径(获取路径下的最后叶目录的文件名.合并两个不同路径下图片文件名等目录/路径案例.正确加载图片路径)之详细攻略 目录 利用python ...

最新文章

  1. ASP.NET Core WebApi 返回统一格式参数
  2. VMWare 6.0桥接模式虚拟机网络配置
  3. 图像处理中的秩、低秩、稀疏
  4. goland go test_Go单元测试实践一,快速上手
  5. Hadoop在MapReduce中使用压缩详解
  6. 十三、MySQL存储过程相关知识总结 + 案例讲解(强化)
  7. (转)向SDE库中写入栅格和矢量数据
  8. Oracle终于安装完成了,开始DBA学习之路
  9. 离散数学 第十三章 欧拉图与哈密顿图
  10. java excel 打不开_Java使用POI生成Excel文件后打不开的问题
  11. 34604-52-9,Ms-PEG3-Ms甲磺酸基是良好的离去基,也可用作伯醇的保护基
  12. 作为开发者你必须要知道的五大浏览器,记得收藏
  13. PS网页设计教程XVII——在Photoshop中设计创意组合网页
  14. 阿里无人超市 “微笑打折”成世界互联网大会热点
  15. FTPS FTPES
  16. 谷歌seo快速排名优化方法?谷歌seo排名技巧
  17. python报错 ‘utf-8‘ codec can‘t encode characters in position xxxx-xxxx: surrogates not allowed
  18. iPhone开发系列文章(四)-开发iPhone应用程序(一)
  19. GIS及空间统计相关基础整理【持续整理中】
  20. atx860和java_JAVA 版 ATX-Client

热门文章

  1. Mac小技巧:在mac上怎么把png转换成jpg
  2. 设置DIV最小高度以及高度自适应随着内容的变化而变化
  3. 通过javascritp对表格进行列拖动排序
  4. 关于ajax跨域的问题
  5. HTML5与phonegap接口对比
  6. java毕业设计选题之《校园管理、教育教学类》
  7. 「代码随想录」746. 使用最小花费爬楼梯【动态规划】力扣详解!
  8. 苹果mac预览应用使用方法
  9. iOS开发之字符串(NSString)的拼接
  10. 区块链之比特币的私钥,公钥和地址是什么?