You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从EmbeddedResource获取资源并访问其中的资源图片?

从EmbeddedResource获取资源及访问图片的方法

一、获取EmbeddedResource资源

要拿到嵌入式资源,关键是通过程序集定位到对应的资源项。你给出的代码已经完成了资源查找和类型转换的核心步骤,完整流程可以参考下面的示例:

// 先获取目标类型所在的程序集
Assembly assembly = typeof(YourTargetType).Assembly;

// 查找指定名称的资源(这里用Module的FindResource,也可以用Assembly的相关方法)
var resource = module.FindResource($"{type.Namespace}.{type.Name}.resources");

// 确认类型后转换为EmbeddedResource
EmbeddedResource embedded = (EmbeddedResource)resource;

⚠️ 注意:资源名称必须和程序集中的实际命名完全匹配,一般格式是命名空间.文件名,如果资源放在子文件夹里,还要加上文件夹路径,比如YourNamespace.SubFolder.ResourceFile.resources。

二、从EmbeddedResource访问资源图片

拿到EmbeddedResource后,需要读取它的流数据,再转换成可用的图片对象,示例代码如下:

// 从EmbeddedResource获取资源流
using (Stream resourceStream = embedded.GetResourceStream())
{
    // 将流转换为Image对象(如果是.NET Core/.NET 5+,需要先安装System.Drawing.Common NuGet包)
    using (Image image = Image.FromStream(resourceStream))
    {
        // 这里可以直接使用图片,比如在WinForms控件中显示
        pictureBox.Image = (Image)image.Clone();
        // 或者保存到本地
        image.Save("saved_image.png", ImageFormat.Png);
    }
}

如果觉得先获取EmbeddedResource太麻烦,也可以直接通过程序集的GetManifestResourceStream方法直接拉取图片流,简化代码:

Assembly assembly = typeof(YourTargetType).Assembly;
// 替换成你实际的图片资源名称,格式是「命名空间.图片路径.图片名」
string imageResourceName = "YourNamespace.Images.app_icon.png";

using (Stream stream = assembly.GetManifestResourceStream(imageResourceName))
{
    if (stream != null)
    {
        using (Image image = Image.FromStream(stream))
        {
            // 执行你的图片操作
        }
    }
}

⚠️ 别忘了把图片文件的「生成操作」设置为「嵌入式资源」(右键图片→属性→生成操作→选嵌入式资源),不然程序集里找不到这个资源。

内容的提问来源于stack exchange,提问作者Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:22:38