我有一个52大小的Bitmap数组,每个单元格包含来自资源的随机图像。我想知道所选图像的名称是什么,当我尝试调试程序时," cards [i]"等于:" {System.Drawing.Bitmap}"。
如何找到卡[i]等于的图像名称?
$Text = @("Apple", "Pear", "Peach", "Banana")
答案 0 :(得分:0)
你通过浏览属性是正确的,但如果你获取属性的值,你显然最终会得到位图,而不是名称。
但实际的原始文件名完全丢失了;无法检索未保存在程序中的信息。您最接近的是检索属性名称。这意味着您应该关注prop.Name
而不是prop.GetValue(...)
。
当然,你可以简单地在一个单独的数组中或者像字典之类的东西中检索两个。在这里,我只是将它作为输出数组提供给函数。
private Bitmap[] GetResourceImages(out String[] names)
{
PropertyInfo[] props = typeof(Properties.Resources).GetProperties(BindingFlags.NonPublic | BindingFlags.Static)
.Where(prop => prop.PropertyType == typeof(Bitmap)).ToArray();
Bitmap[] images = new Bitmap[props.Length];
names = new String[props.Length];
for(Int32 i = 0; i < props.length; i++)
{
images[i] = prop.GetValue(null, null) as Bitmap;
names[i] = prop.Name;
}
return images;
}
致电代码:
String[] picNames;
Bitmap[] cards = GetResourceImages(out picNames);