在foreach循环中使用字符串变量检索图像资源

时间:2012-10-01 10:09:39

标签: c# resources foreach

我有一个字符串数组“abc” 我把它放在每个循环中。我想使用foreach循环中的值从资源中检索图像并将其放入图片框中。

以下代码:

char[] stringArr = inputted.ToCharArray();
        foreach (char i in stringArr)
        {
            PictureBox pictureBox = new PictureBox(); 
            object obj = ResourceManager.GetObject(i.ToString());
            pictureBox.Image = ((System.Drawing.Bitmap)(obj));
            Controls.Add(pictureBox);
        }

我需要做些什么才能让这个工作? 我想要实现的是,有一个图片,字母表中的每个字符代表一个不同的图片,用户输入一个字符串并单击一个按钮,用户输入,形成stringArr,我希望它输出相关基于他输入的字符串的图像

2 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

object obj = ResourceManager.GetObject("MyResourceName", resourceCulture);
return ((System.Drawing.Bitmap)(obj));

按名称获取资源。

ResourceManager类似于:

var ResourceManager = 
    new System.Resources.ResourceManager(
        "YourAssembly.Properties.Resources", 
        typeof(Resources).Assembly);

所以在你的例子中你可以写:

foreach (char i in stringArr)
{
    PictureBox pictureBox = new PictureBox();

    object obj = ResourceManager.GetObject(i.ToString(), resourceCulture);
    pictureBox.Image = ((System.Drawing.Bitmap)(obj));
}

(如果您的图片没有特殊文化,您也可以省略resourceCulture参数。)

我认为你的代码只是一个更大的例子的摘录,因为我在一个外观中创建一个PictureBox并且而不是将它分配给一个表单是没有意义的。

答案 1 :(得分:0)

这是一个可以使用的简单方法

添加到您的代码中,并将XXXAPPNAMEXXX替换为您的应用程序名称。

    public Bitmap GetImageResourceByName(string name)
    {
        Bitmap MethodResult = null;
        try
        {
            MethodResult = (Bitmap)XXXAPPNAMEXXX.Properties.Resources.ResourceManager.GetObject(name, XXXAPPNAMEXXX.Properties.Resources.resourceCulture);

        }
        catch //(Exception ex)
        {
            //ex.HandleException();
        }
        return MethodResult;
    }

注意:进入Resources.Designer.cs并将private属性resourceCulture设为公共。

我已经注释掉了我的错误处理(ex.HandleException),因为你的错误处理可能会有所不同。