【问题标题】:How to retrieve Image from Resources folder of the project in C#如何在 C# 中从项目的 Resources 文件夹中检索图像
【发布时间】:2010-10-10 13:17:56
【问题描述】:

我的项目的资源文件夹中有一些图像,但我想从项目的这些资源文件中更改图片框

【问题讨论】:

标签: c# winforms resources


【解决方案1】:

考虑使用Properties.Resources.yourImage

Properties.Resources 包含您作为资源添加的所有内容(请参阅您的项目属性、资源选项卡)

除此之外,如果您将图像作为资源嵌入到项目中,您可以通过在嵌入图像的程序集上调用 GetManifestResourceStream 来获取它们,例如

Stream imgStream = 
    Assembly.GetExecutingAssembly().GetManifestResourceStream(
    "YourNamespace.resources.ImageName.bmp");
pictureBox.Image = new Bitmap(imgStream);

不要忘记将图像标记为嵌入式资源! (您需要在其属性窗口中设置图像的构建操作)

如果您发现您不断从GetManifestResourceStream 回复null,则您可能输入了错误的名称。 (可能很难找到正确的名称)在程序集上调用GetManifestResourceNames;这将为您返回所有资源名称,您可以在列表中找到所需的名称。

【讨论】:

    【解决方案2】:
    string img = null;
    
    private void btnShow_Click(object sender, EventArgs e)
    {
        string imgName;
        img = textBox1.Text;
        imgName = "images/" + img + ".jpg";
    
        if (imgName == null)
        {
            MessageBox.Show("no photo");
        }
        else if (imgName != null)
        {
            this.picBox1.Image = Image.FromFile("images/" + img + ".jpg");
        }
    }
    

    【讨论】:

      【解决方案3】:

      以下是从资源文件夹中获取图像的代码。通常我们将图像保存在资源文件夹中。但有时我们只有图像名称。在这种情况下,您可以仅使用图像名称访问资源文件夹中的图像。

      下面的代码将对此进行演示。

      private System.Resources.ResourceManager RM = new System.Resources.ResourceManager("YourAppliacationNameSpace.Properties.Resources", typeof(Resources).Assembly);
      
      PbResultImage.Image = (Image)RM.GetObject(YourPictureName);
      
      • YourAppliacationNameSpace 表示您的应用程序的名称。
      • YourPictureName 表示您要从资源文件夹访问的图片。但图片名称必须不带扩展名,例如(PNG、GIF、JPEG 等)

      希望我对某人有所帮助。

      谢谢。

      【讨论】:

        【解决方案4】:

        右键单击项目。转到资源选项卡。选择现有选项并添加图像。

        现在通过

        在代码中访问
        Image = Properties.Resources.ImageName
        

        【讨论】:

          【解决方案5】:

          为我工作:

          (Bitmap) Properties.Resources.ResourceManager.GetObject("ImageName");
          

          【讨论】:

            【解决方案6】:

            如果您需要通过字符串或串联引用调用您的控件,这也适用于您的控件。

            只需先调用控件类型(在本例中为图片框)。假设 i=某个数字和 d=某个字符串:

            var i = <some number>;
            var d = <some string>;
            
            ((PictureBox)this.Controls["pictureBox" + i.ToString()]).Image = (Image)Properties.Resources.ResourceManager.GetObject("dice" + d);
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2021-11-03
              • 2015-05-15
              • 2020-03-18
              • 1970-01-01
              • 1970-01-01
              • 2016-10-03
              相关资源
              最近更新 更多