如何以编程方式访问资源文件中的图像?

时间:2010-01-22 13:09:09

标签: c# embedded-resource

我在资源文件中有30个PNG,我想在计时器内迭代它们。此计时器将表单的背景图像设置为序列中的下一个PNG,以生成基本动画。

我找不到一种简单的方法来枚举资源文件并获取实际图像。我也热衷于保持对图像的引用不固定到它们的文件名,以便更新资源文件中图像的命名不需要我更新这部分代码。

备注:

  • 资源文件中的图像按顺序命名('image001.png','image002.png',...)。
  • 此资源文件专门用于存储这些图像。

4 个答案:

答案 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)