2014-03-01 195 views
1

我想使用for循環訪問具有不同順序名稱的資源。例如:如何從字符串變量名稱?

class Program 
{ 
    static void Main(string[] args) 
    {  
     ExtractImages(); 
    } 

    static void ExtractImages() 
    { 
     Bitmap bmp; 

     for (int i = 0; i < 6; i++) 
     { 
      // Here I need something like: 
      // bmp = new Bitmap(Properties.Resources.bg + i); 

      bmp = new Bitmap(Properties.Resources.bg0); // in order bg0..bg5 
      bmp.Save("C:\\Users/Chance Leachman/Desktop/bg" + i + ".bmp"); 
     } 
    } 
} 

任何想法?它基本上是試圖讓一個字符串變成一個變量名。謝謝!

回答

6

您可以使用ResourceManager.GetObject Method

GetObject的方法用於檢索非字符串資源。其中包括屬於原始數據類型(如Int32或Double),位圖(如System.Drawing.Bitmap對象)或自定義序列化對象的值。通常,返回的對象必須被轉換(使用C#)或轉換(在Visual Basic中)爲適當類型的對象。

var bitmap = Properties.Resources.ResourceManager.GetObject("bg0") as Bitmap; 

在用於循環:

for (int i = 0; i < 6; i++) 
{ 
    string bitmapName = "bg" + i; 
    bmp = Properties.Resources.ResourceManager.GetObject(bitmapName) as Bitmap; 
    if(bmp != null) 
     bmp.Save("C:\\Users/Chance Leachman/Desktop/bg" + i + ".bmp"); 
}