将位图资源读入Uri

时间:2017-04-13 03:47:56

标签: c# bitmap datagrid resources

我正在编写一个使用文件路径从文件夹(.gif)中读取图像的代码,并将它们存储在datagridObject中,以便稍后在dataGrid中显示。

代码如下所示:

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循环中使用图像资源并将它们存储到对象中的好方法?

非常感谢你。

1 个答案:

答案 0 :(得分:0)

添加新的Resources文件,然后根据需要将图像添加到此文件中。 我们可以使用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;
}