我正在编写一个使用文件路径从文件夹(.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循环中使用图像资源并将它们存储到对象中的好方法?
非常感谢你。
答案 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;
}