1

文字列配列「abc」があります。これをforeachループに入れます。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に形成され、関連するものを出力します。彼が入力した文字列に基づく画像

4

2 に答える 2

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内部の外観を作成してフォームに割り当てないのは意味がないため、コードはより大きな例からの抜粋にすぎないと思います。

于 2012-10-01T10:11:42.333 に答える
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に移動し、プライベート属性resourceCultureをパブリックにします。

エラー処理(例:HandleException)は異なる場合があるため、コメントアウトしました。

于 2016-01-29T09:57:41.967 に答える