有次用reflector工具,查看了一个dll,发现里面很多漂亮的图标资源。于是开始想怎样在程序中动态去引用这些资源了?用google搜了下。自已也尝试了几个方法。找到了一个可行的。
// 加载dll,并获得期资源名称列表
string[] files = System.Reflection.Assembly.Load("DevComponents.DotNetBar2").GetManifestResourceNames();
//在资源列表中任选一名称,获得对应资源的流数据
System.IO.Stream ms = System.Reflection.Assembly.Load("DevComponents.DotNetBar2").GetManifestResourceStream ("DevComponents.DotNetBar.SystemImages.BlankStartButtonPressedVistaBlack.png");
//将流数据保存为文件。生成abc.png文件在程序的执行目录下。
(new Bitmap(ms)).Save("abc.png");
在这解决这个问题的过程中还无意中搞清楚了。VS2008中调用资源的原理(在用VC做开发时。来龙去脉得弄清楚。用VS2008时 IDE为了包办了大部分工作,拖两下点两下,所见就所得了)
我的当前项目为UI,在界面设计时给某控件加个背景图片时。IDE会自动在UI项目下生成一个Properties栏目,在该栏目下有一个Resources.resx文件双击它会显示所有项目加入的图像资源,右键查看其代码时
会看到很多如
<data name="addUser" type="System.Resources.ResXFileRef, System.Windows.Forms">
<va

本文介绍了如何在C#中从DLL中提取资源,通过System.Reflection.Assembly加载DLL并获取资源名称列表,然后使用GetManifestResourceStream方法读取资源流数据。同时,文章揭示了Visual Studio 2008 IDE创建资源文件的工作原理,包括Resources.resx文件和Resources.Designer.cs文件的作用,以及如何在代码中调用和使用这些资源。
最低0.47元/天 解锁文章
1408





