关于在Silverlight中添加图片的问题?
来源:互联网 发布:方维社区o2o系统源码 编辑:程序博客网 时间:2024/05/16 09:01
在Silverlight中添加图片,目前支持的Image格式有jpg和png两种,如何在目录中添加,有些什么技巧呢?
反斜杠forward-slash?有没有什么区别呢?以反斜杠开头的a图片需要放在网站站点ClientBin目录下的相应文件夹里,不以反斜杠开头的b图片应该放在Silverlight目录下的相应文件夹里。这样才可正确引用,否则的话将会发生ImageError。
反斜杠开头的相对路径,代表的相对位置是应用程序运行的根目录,即.xap压缩包内,若在这其中寻找不到要引用的文件,则相对路径的回退机制(fallback mechanism )自动在在.xap所在的目录,本例即为ClientBin目录中寻找加以引用。两个位置都没有,才会发生错误。不以"/"开头,则代表的相对位置是引用该图片的XAML文件所在的目录,如page.xaml文件所在的目录。
那么究竟选择哪种方式呢?把xap文件重命名为zip文件,解压之,再用reflector反编译其中的dll文件,发现其包含了b图片,却没有a图片。其实也很明显,a所在的images文件夹与.xap同级,自然不会包含在内。由此可知,不以反斜杠开头的a图片嵌入到Silverlight程序中的xap文件直接下载到客户端,而a图片则按需索取(on-demand),当显示时再去下载。当数据量较大时,不以反斜杠开头的方式加载程序的时间就过长,用户体验不好,以"/"开头自然就无此无虑,不过以反斜杠开头的话,在xaml中设计预览看不到,只有程序运行才可以看到。(若为了预览,可先从ClienBin那里复制一份放在page.xaml同级目录下供设计使用,程序发布时予以删除。)其实也可以直接在TestPage.aspx中测试就可以看到图片了,而在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.csdn.net/test.jpg之类绝对URI就没反斜杠什么事了。在代码中还可以利用Application.Current.Host.Source.AbsolutePath等方法。
再深入一点,图片放在与page.xaml同级的文件夹下,一样可以使用反斜杠进行引用。只需要在相应图片的属性里,把Build Action
选择为"Content"即可,不过该图片还是被放到.xap压缩包里了,这是要注意的。
- 关于在Silverlight中添加图片的问题?
- 关于在symbian listbox中添加svg图片的问题
- 关于在symbian listbox中添加svg图片的问题
- Silverlight中在DataGrid 表头添加图片
- 关于在silverlight 中自定义按钮的问题
- ios 关于如何消除在向cell中添加图片文字是时出现的重影问题
- 再再问关于在帖子里边添加图片的问题
- 关于Silverlight 添加右键在某些浏览器中看不到的问题
- Silverlight中WCF在添加引用中不能发现的问题
- 关于Silverlight安装中遇到的问题
- 关于在Silverlight中调用C++编写的DLL的问题
- Silverlight给按钮添加图片问题
- 关于在xcode中添加第三方文件夹的问题
- 关于在ViewPager中添加Fragment的问题
- 在Silverlight窗体中添加可重用的背景
- Silverlight应用程序中添加WCF服务的问题(整理)
- 关于在eclipse中插入图片的问题
- 关于在jsp中使用图片相对路径的问题
- 我的异常网 -异常汇总2009-11-22
- 2862 环形整数串
- Spring技术内情——深入解析Spring架设与设计原理(6)Spring ACEGI
- [笔记] Windows创建字体时,高度的正负值
- [转]C++异常机制的实现方式和开销分析
- 关于在Silverlight中添加图片的问题?
- 吻
- 使用java与flex轻便构建cs程序
- every thing start now
- 程序员必备技能
- 数据集-用于数据挖掘、信息检索、知识发现等
- ASP.NET学习笔记三 : 系统对象与状态管理(二)
- VS 2010 测试功能学习(六) - Rolling Build
- 代码重构