2017-04-13 7 views
0

ファイルパスを使用して画像をフォルダ(.gif)から読み取ってdatagridObjectに保存するコードを作成していますので、後でdataGridに表示することができます。ビットマップリソースをUriに読み込む

コードは次のようになります。

string[] filePaths = Directory.GetFiles(Images_File); 
var L = new List<DataGridObject>(); 
for (int z = 0; z < list_Exp.Count; z++) 
     { 
      var d = new DataGridObject(); 

      d.MainName = list_MainName[z]; 
      d.Level = list_Level[z]; 
      d.Exp = list_Exp[z]; 

      d.ImageSource = new Uri(String.Format("{0}\\{1}.gif", Images_File, list_MainName[z]), UriKind.RelativeOrAbsolute); 

      L.Add(d); 

     } 

     dataGrid.ItemsSource = L; 

しかし、私はそれをリソースとして、すべての画像ファイルを持っています.exeファイルしたいと思います。

私は、資源として画像を埋め込み、私が使用してみました:

d.ImageSource = new Bitmap(namespace.Properties.Resources.list_MainName[z]); 

が、イムエラーを取得する:

Cannot implicitly convert type System.Drawing,Bitmap to System.Uri

forループ内でイメージリソースを使用してオブジェクトに格納する良い方法はありますか?

ありがとうございました。

答えて

0

新しいリソースファイルを追加し、必要に応じてこのファイルにイメージを追加します。 ResourceReaderを使用して画像を繰り返し処理できます。

public Dictionary<string,Bitmap> GetEmbeddedImages() 
{ 
    // Add a new Resources file named Resource1.resx; VS will generate a static class named Resource1 
    // Add images to this file as required 

    var assembly = System.Reflection.Assembly.GetExecutingAssembly(); 
    var resourceName = String.Format("{0}.{1}.resources", assembly.GetName().Name, typeof(Resource1).Name); 

    Dictionary<string, Bitmap> images = new Dictionary<string, Bitmap>(); 

    using (var rStream = assembly.GetManifestResourceStream(resourceName)) 
    using (var rReader = new ResourceReader(rStream)) 
    { 
     foreach (DictionaryEntry de in rReader) 
     { 
      var itemName = (string)de.Key; 
      var itemValue = (Bitmap)de.Value; 

      images.Add(itemName, itemValue); 
     } 
    } 

    return images; 
} 
関連する問題