33

このように画像をロードしたい:

void info(string channel)
{
    //Something like that
    channelPic.Image = Properties.Resources.+channel
}

やりたくないから

void info(string channel)
{
    switch(channel)
    {
        case "chan1":
            channelPic.Image = Properties.Resources.chan1;
            break;
        case "chan2":
            channelPic.Image = Properties.Resources.chan2;
            break;
    }
}

このようなことは可能ですか?

4

6 に答える 6

53

このクラスで使用されるSystem.Resources.ResourceManagerキャッシュを返すwhichをいつでも使用できます。とは2つの異なる画像を表すため、入力とプロジェクトリソースに一致するオブジェクトを返すを使用できResourceManagerます。chan1chan2System.Resources.ResourceManager.GetObject(string name)

object O = Resources.ResourceManager.GetObject("chan1"); //Return an object from the image chan1.png in the project
channelPic.Image = (Image)O; //Set the Image property of channelPic to the returned object as Image

注意:指定された文字列がプロジェクトリソースで見つからなかった場合、Resources.ResourceManager.GetObject(string name)返されることがあります。null

ありがとう、
これがお役に立てば幸いです:)

于 2012-11-27T20:17:49.523 に答える
11

あなたは:を使用してこれを行うことができResourceManagerます

public bool info(string channel)
{
   object o = Properties.Resources.ResourceManager.GetObject(channel);
   if (o is Image)
   {
       channelPic.Image = o as Image;
       return true;
   }
   return false;
}
于 2012-11-27T20:17:07.400 に答える
7

WPFでこれを試してください

StreamResourceInfo sri = Application.GetResourceStream(new Uri("pack://application:,,,/WpfGifImage001;Component/Images/Progess_Green.gif"));
picBox1.Image = System.Drawing.Image.FromStream(sri.Stream);
于 2014-05-30T11:30:28.440 に答える
4

画像がリソースファイルにある場合、ResourceManagerは機能します。プロジェクト内の単なるファイル(たとえばルート)の場合は、次のようなものを使用して取得できます。

System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream file = assembly .GetManifestResourceStream("AssemblyName." + channel);
this.pictureBox1.Image = Image.FromStream(file);

または、WPFを使用している場合:

    private ImageSource GetImage(string channel)
    {
        StreamResourceInfo sri = Application.GetResourceStream(new Uri("/TestApp;component/" + channel, UriKind.Relative));
        BitmapImage bmp = new BitmapImage();
        bmp.BeginInit();
        bmp.StreamSource = sri.Stream;
        bmp.EndInit();

        return bmp;
    }
于 2012-11-27T20:31:11.587 に答える
0
    this.toolStrip1 = new System.Windows.Forms.ToolStrip();
    this.toolStrip1.Location = new System.Drawing.Point(0, 0);
    this.toolStrip1.Name = "toolStrip1";
    this.toolStrip1.Size = new System.Drawing.Size(444, 25);
    this.toolStrip1.TabIndex = 0;
    this.toolStrip1.Text = "toolStrip1";
    object O = global::WindowsFormsApplication1.Properties.Resources.ResourceManager.GetObject("best_robust_ghost");

    ToolStripButton btn = new ToolStripButton("m1");
    btn.DisplayStyle = ToolStripItemDisplayStyle.Image;
    btn.Image = (Image)O;
    this.toolStrip1.Items.Add(btn);

    this.Controls.Add(this.toolStrip1);
于 2014-12-16T09:52:07.983 に答える
-2

プロジェクトに画像リソースを追加してから(プロジェクトを右クリックして[プロパティ]項目を選択)、次の方法でアクセスできます。

this.picturebox.image = projectname.properties.resources.imagename;
于 2014-12-09T18:53:17.973 に答える