我在资源文件中有30个PNG,我想在计时器内迭代它们。此计时器将表单的背景图像设置为序列中的下一个PNG,以生成基本动画。
我找不到一种简单的方法来枚举资源文件并获取实际图像。我也热衷于保持对图像的引用不固定到它们的文件名,以便更新资源文件中图像的命名不需要我更新这部分代码。
备注:
答案 0 :(得分:2)
private void Form1_Load(object sender, EventArgs e)
{
var list = WindowsFormsApplication1.Properties.Resources.ResourceManager.GetResourceSet(new System.Globalization.CultureInfo("en-us"), true, true);
foreach (System.Collections.DictionaryEntry img in list)
{
System.Diagnostics.Debug.WriteLine(img.Key);
//use img.Value to get the bitmap
}
}
答案 1 :(得分:1)
Assembly asm = Assembly.GetExecutingAssembly();
for(int i = 1; i <= 30; i++)
{
Stream file = asm.GetManifestResourceStream("NameSpace.Resources.Image"+i.ToString("000")+".png");
// Do something or store the stream
}
获取所有嵌入资源的名称:
string[] resourceNames = Assembly.GetManifestResourceNames();
foreach(string resourceName in resourceNames)
{
System.Console.WriteLine(resourceName);
}
另外,请查看Form1_Load函数中的example。
答案 2 :(得分:1)
以下是有关如何在CodeProject上提取嵌入资源here的精彩教程,此处how将图像用作alpha混合,并显示如何将其加载到图像列表中。这是一个帮助类,可以更轻松地加载嵌入式资源here。
希望这有帮助, 最好的祝福, 汤姆。
答案 3 :(得分:0)