使用Application.GetResourceStream从XAP安装包加载任意资源

不得不说,WP7开发的资料真的是太少了,国内有句话叫“天下文章一大抄”,查Application.GetResourceStream的用法,找遍了整个网络,无非就那一两篇,而且写得还不完整,包括微软官方的例子。在花了近半天的时间后,终于解决问题。 我们可以预先把程序中用到的资源,如图片,音乐等放入项目中,打包进XAP文档,需要的时候从中调用。下面就说说具体实现方法。 第一步,把数据存进项目。 1、右键点击项目名称-添加-新建文件夹(英文版请自行翻译),这里文件夹名以image为例,把需要的图片拖进来,当然你也可以不建,直接把图片拖到项目项目录下,但为了整洁,建议还是建一下。 2、选中刚刚拖进去的图片,看右下角的属性标签,如果没有,右键点图片,选属性。生成操作选Resource. 第二步,程序调用。

1
System.IO.Stream src = Application.GetResourceStream(new Uri("/PhoneApp4;component/image/a.png", UriKind.Relative)).Stream;

关键在Uri的格式,PhoneApp4是项目名称,component是固定路径,image/a.jpg才是图片资源相对路径,得到的是Stream,在微软官方的例子中,使用下面的方法来转换成图片:

1
2
3
4
            BitmapImage bi = new BitmapImage();
            bi.SetSource(src);
            Image img = new Image();
            img.Source = bi;

网上的文章基本上都没写第一步,我就卡在这里,添加图片还好说,但是属性的生成操作没设置,导致在使用的时候抛异常。

以上内容摘自wchao911

但是,后来我又发现一个可以实现相同功能的方法,只需要一步:

 只要将路径前的“/”去掉就可以了。

            StreamResourceInfo sri = null;
            Uri uri = new Uri("Images/Background.png", UriKind.RelativeOrAbsolute);//这里不能添加“/”在image前面,否者找不到资源。
            sri = Application.GetResourceStream(uri);//从应用程序包返回资源
            BitmapImage bmpimg = new BitmapImage();
            bmpimg.SetSource(sri.Stream);
            ed.SaveBackground(bmpimg);

 

转载于:https://www.cnblogs.com/dieaz5/archive/2013/02/26/2934399.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值