日期:2014-05-17 浏览次数:21079 次
//
在这里,我来总结一下关于资源文件的相关操作。
? //1.
比较常见的有获取资源文件对应的文件流,然后转换到相对应的文件
//
比较典型的做法是通过代码程序集加载指定资源
//
如下通过Assembly
的静态方法GetExecutingAssembly()
得到程序集
//
还有很多方式可以得到代码程序集
System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); Stream manifestResourceStream = null; manifestResourceStream = asm.GetManifestResourceStream("MyLibrary." + filename); return manifestResourceStream; //得到该文件流,这里也可以是字符流。 //如果我们资源文件对应的该清单是一个图片文件 System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(manifestResourceStream, true); //如果我们的资源文件是光标文件 Cursor cursor = new Cursor(manifestResourceStream); //图标 Icon icon = new Icon(manifestResourceStream); //字符串 System.IO.StreamReader sr = new System.IO.StreamReader(manifestResourceStream); string str = sr.ReadLine();
?
//2.
另外一种写法,主要是通过ResourceManager
类的GetObject()
方法
//
也可以通过GetStream()
得到流后执行操作.
System.Resources.ResourceManager manager = new System.Resources.ResourceManager("资源名称", Assembly.GetExecutingAssembly()); Object target = manager.GetObject("资源文件名");//获取到指定的资源的值 //在这里对应我们加入到资源文件的清单, //转换回我没的目标值,可能会产生一个拆箱的过程 //如果我们资源文件对应的该清单是一个图片文件System.Drawing.Bitmap bitmap = (System.Drawing.Bitmap)target; //如果我们的资源文件是光标文件 Cursor cursor = (Cursor)target; //图标 Icon icon = (Icon)target; //字符串 string str = target.ToString();//或者manager manager.GetString("资源文件名");
?
//
通过以上两种操作,就可以从资源文件中进行一个指定资源的加载了。
//
前提是你的资源清单理存在该资源哦。
//
推荐使用第种方法,这种方法也是MS Resx
里对资源文件的操作方法。
//
现在我们已经可以读取资源文件了,现在开始写资源文件的操作。
? //3.
当然,你可以直接通过设计界面来添加一个资源文件,
//
切记将生成操作改为“嵌入的资源”,Embed
System.Resources.ResourceWriter writer = new System.Resources.ResourceWriter("dongpad.com.resources"); writer.AddResource("bitmap", Image.FromFile(@"dongpad.bitmap")); writer.AddResource("cursor", Image.FromFile(@"dongpad.cursor")); writer.AddResource("ico", Image.FromFile(@"dongpad.ico")); writer.AddResource("str", Image.FromFile(@"dongpad.str")); //在这里资源的名称记得要唯一。 writer.Generate(); writer.Close();?