pik*_*chu 15 c# resources winforms
我一直在学习C#和visual C#IDE中的资源.我现在很困惑.我已经阅读了StackOverflow上的一些页面,比如这个如何获取一个embebbed资源的路径和Microsoft的文档,但它让我很困惑.
我的第一个问题:什么是资源:它是.resources文件还是其中的文件,如图标.
第二:当我使用GetManifestResourceNames方法时:我是否获得.resources文件名或其中的文件名.当我在我的程序中使用它时,我只获取.resources文件,但是阅读像这样循环遍历所有资源的resx文件的主题,我得到的印象我应该得到的名称.resources文件中的文件.
是我,还是这个术语真的有点令人困惑?任何人都可以让它更清晰一点吗?谢谢你的帮助.
Fel*_*ano 14
资源是您通过将其标记为"EmbeddedResource"来编译的任何文件,这只是将文件合并到程序集中.GetManifestResourceNames()只是一个枚举器,它给我们所有嵌入式编译资源文件的名称,例如MyAssembly.resources.需要通过ResourceSet加载此资源文件来枚举实际资源元素.
Tej*_*rma 10
我不知道你是否仍然需要这个问题的答案,但根据我的经验,我会GetManifestResourceNames()返回.resource程序集中嵌入的文件的名称.
如果您想访问各个资源,您可以这样做:
Assembly assembly = Assembly.LoadFrom(assemblyName);
string[] names = assembly.GetManifestResourceNames();
ResourceSet set = new ResourceSet(assembly.GetManifestResourceStream(names[0]));
foreach (DictionaryEntry resource in set)
{
Console.WriteLine("\n[{0}] \t{1}", resource.Key, resource.Value);
}
Run Code Online (Sandbox Code Playgroud)
由于Felice Pollano的回答,我得到了我的项目.我在我的解决方案中添加了一个名为Images的文件夹,并在Windows资源管理器中打开该文件夹,然后将我的图像文件复制到Images文件夹中.然后进入visual studio并单击Solution Explorer顶部的"show all files",右键单击Images文件夹中的图像文件,然后单击Include in project.然后我左键单击解决方案资源管理器中的图像文件,然后在"属性"窗口中,将构建操作设置为嵌入式资源,就像您提到的那样.
这是我访问此图片的代码
private Dictionary<int, Image> GetImages()
{
List<Stream> picsStrm = new List<Stream>();
Assembly asmb = Assembly.GetExecutingAssembly();
string[] picNames = asmb.GetManifestResourceNames();
foreach (string s in picNames)
{
if (s.EndsWith(".png"))
{
Stream strm = asmb.GetManifestResourceStream(s);
if (strm != null)
{
picsStrm.Add(strm);
}
}
}
Dictionary<int, Image> images = new Dictionary<int, Image>();
int i = 0;
foreach (Stream strm in picsStrm)
{
PngBitmapDecoder decoder = new PngBitmapDecoder(strm,
BitmapCreateOptions.PreservePixelFormat,
BitmapCacheOption.Default);
BitmapSource bitmap = decoder.Frames[0] as BitmapSource;
Image img = new Image();
img.Source = bitmap;
img.Stretch = Stretch.UniformToFill;
images.Add(i, img);
i++;
strm.Close();
}
return images;
}
Run Code Online (Sandbox Code Playgroud)
这实际上是从这篇文章中(A WCF,WPF的聊天应用)由伊斯兰教ElDemery
| 归档时间: |
|
| 查看次数: |
15432 次 |
| 最近记录: |