3

我从项目设置->资源将图像添加到我的 c# 项目我
如何在运行时获取此图像?
我尝试这个:

public byte[] GetResource(string ResourceName)
{
    System.Reflection.Assembly asm = Assembly.GetEntryAssembly();

    // list all resources in assembly - for test
    string[] names = asm.GetManifestResourceNames(); //even here my TestImg.png is not presented

    System.IO.Stream stream = asm.GetManifestResourceStream(ResourceName); //this return null of course

    byte[] data = new byte[stream.Length];

    stream.Read(data, 0, (int)stream.Length);

    return data;
}

我这样称呼这个函数:

byte[] data = GetResource("TestImg.png");

但是我在项目资源管理器的资源文件夹中看到了我的图像。
在此处输入图像描述

谁能告诉那里有什么问题?
在此处输入图像描述

4

4 回答 4

8

您需要将文件设置TestImg.png为“嵌入式资源”。资源名称将是Resources/TestImg.png.

于 2013-04-01T13:01:47.703 回答
2

您可以使用 访问图像Properties.Resources.TestImg

于 2013-04-01T13:05:56.357 回答
2

这有效:

    var info = Application.GetResourceStream(uri);
    var memoryStream = new MemoryStream();
    info.Stream.CopyTo(memoryStream);
    return memoryStream.ToArray();

此外,如果要将图像保存到驱动器:

    var b =
    new Bitmap(namespace.Properties.Resources.image_resouce_name);
    b.Save("FILE LOCATION");
于 2016-12-29T05:04:50.430 回答
1

您可以编辑 Resources.resx 文件并更改:

  <data name="ResourceKey" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\Image.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
  </data>

to(替换文件名后的类型和程序集定义):

  <data name="ResourceKey" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>..\Resources\Image.jpg;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </data>

现在您可以使用Properties.Resources.ResourceKey. 我不知道这是否可以在不手动编辑资源文件的情况下完成。

于 2020-11-27T14:07:14.110 回答