2017-04-13 3 views
0

Ich schreibe einen Code, der Dateipfad verwendet, um Bilder aus einem Ordner zu lesen (.gif) und speichert sie in datagridObject, damit ich sie später in dataGrid zeigen kann.Bitmap-Ressource in Uri lesen

Der Code sieht wie folgt aus:

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; 

Allerdings würde ich es eine .exe Datei vornehmen möchten, die alle die Image-Datei als Ressourcen haben wird.

ich die Bilder als Ressource eingebettet und ich versuchte, mit:

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

aber im erhalte eine Fehlermeldung:

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

Gibt es eine gute Möglichkeit, Bildressourcen innerhalb einer for-Schleife zu verwenden und sie in einem Objekt zu speichern?

Vielen Dank.

Antwort

0

Fügen Sie eine neue Ressourcendatei hinzu und fügen Sie dann Bilder zu dieser Datei wie erforderlich hinzu. Wir können über die Bilder mit ResourceReader iterieren.

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; 
} 
Verwandte Themen