c#

C#中图标文件的嵌入与提取

小樊
90
2024-08-12 00:02:45
栏目: 编程语言

在C#中,可以通过使用System.Drawing.Icon类来嵌入和提取图标文件。以下是一个示例代码:

  1. 嵌入图标文件:
using System;
using System.Drawing;
using System.IO;
using System.Reflection;

class Program
{
    static void Main()
    {
        // 读取图标文件
        Icon icon = new Icon("icon.ico");

        // 将图标文件嵌入到程序集中
        using (MemoryStream ms = new MemoryStream())
        {
            icon.Save(ms);
            byte[] iconData = ms.ToArray();
            
            Assembly assembly = Assembly.GetExecutingAssembly();
            string resourceName = "icon.ico";
            using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName))
            {
                if (resourceStream == null)
                {
                    using (Stream output = assembly.GetManifestResourceStream(resourceName))
                    {
                        output.Write(iconData, 0, iconData.Length);
                    }
                }
            }
        }
    }
}
  1. 提取图标文件:
using System;
using System.Drawing;
using System.IO;
using System.Reflection;

class Program
{
    static void Main()
    {
        // 从程序集中提取图标文件
        Assembly assembly = Assembly.GetExecutingAssembly();
        string resourceName = "icon.ico";

        using (Stream resourceStream = assembly.GetManifestResourceStream(resourceName))
        {
            using (MemoryStream ms = new MemoryStream())
            {
                resourceStream.CopyTo(ms);
                Icon icon = new Icon(ms);
                
                // 使用提取的图标文件
                // 例如,将图标显示在窗体上
                Form form = new Form();
                form.Icon = icon;
                form.Show();
            }
        }
    }
}

在上面的示例中,首先创建一个Icon对象,然后将其保存为字节数组,并将其嵌入到程序集中。然后通过程序集中的资源流提取图标文件,并将其转换为Icon对象,最后可以将其用于显示在窗体上。

0
看了该问题的人还看了