zoukankan      html  css  js  c++  java
  • 使用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);
  • 相关阅读:
    shell脚本根据端口号kill掉进程
    使用netstat -ano 查看机器端口的占用情况(windows环境)
    分享一两个小工具,
    将压缩文件伪装图片格式文件以及将python文件转化为exe文件(测试完,真的有效)
    celery 异步任务 周期任务 定时任务的实现
    wsgi、uwsgi、asgi协议的关系
    centos7忘记密码更改步骤
    工作遇到的坑以及自己的学习悟道之道
    案例小集锦
    asp.net mvc部署
  • 原文地址:https://www.cnblogs.com/dieaz5/p/2934399.html
Copyright © 2011-2022 走看看