【问题标题】:.ico image not suited for folder image in windows OS?.ico 图像不适合 Windows 操作系统中的文件夹图像?
【发布时间】:2013-06-20 07:29:02
【问题描述】:

我编写了 c# windows 程序,用于将所有图像转换为 .ico 文件。但 .ico 仅适用于 favicon,不适用于文件夹图像

这是我的代码

Image theImage = Image.FromFile(textBox1.Text);
Bitmap theBitmap = new Bitmap(theImage, new Size(width, height));

第二行用于将图像转换为 .ico 文件。

有人知道怎么解决吗?

【问题讨论】:

  • 你可以试试 Bitmap.GetHicon()
  • 获得与 Windows 资源管理器相同的图标需要 pinvoke、SHGetFileInfo 和 SHGFI_ICON 选项。谷歌搜索得很好。

标签: c# bitmap


【解决方案1】:

请查看https://stackoverflow.com/a/3215441/361100 链接以创建多个大小的ico 文件。

帖子带你去http://www.vbforums.com/showthread.php?396650-Create-Valid-Icon-Files!-In-24-bit-true-color!链接,我似乎工作得很好。

我将删除错误指向的帖子以将 ico 应用于文件夹。

-- 已移除--

【讨论】:

  • 我认为您的代码用于更改文件夹图像。但我不想要那个。我被问到为什么我的输出(.ico 图像)不适合文件夹图像?
  • 抱歉说错了。我认为您必须使用多个大小的 ico 文件而不是单个大小的 ico 文件。
  • 是的,我创建了多个大小的 .ico 文件。这对文件夹图像有什么问题吗?
  • 我几乎不这么认为。嗯……你用我删除的方法应用了吗?
  • 图像尺寸必须匹配 Windows 才能应用。确切地。 50x50 是不可接受的。请查看这篇文章以检查合适的尺寸:msdn.microsoft.com/en-us/library/aa511280.aspx
【解决方案2】:

简而言之,您需要包含大小为 16x16、32x32 和 48x48 的图标,GetHicon 在创建 32 位图标时不太擅长。只要您只需要 32 位图标,您就可以使用 FreeImage 创建多资源图标。

请在此处查看我对您的相关问题的回答以获取代码示例: Convert image to icon in c#

【讨论】:

    【解决方案3】:

    此代码将起作用:

    Bitmap theBitmap = new Bitmap(theImage, new Size(width, height));
    IntPtr Hicon = theBitmap.GetHicon();// Get an Hicon for myBitmap.
    Icon newIcon = Icon.FromHandle(Hicon);// Create a new icon from the handle.
    

    如果你想保存它,请这样做:

    FileStream fs = new FileStream(@"c:\Icon\" + filename + ".ico", FileMode.OpenOrCreate);//Write Icon to File Stream
     newIcon.Save(fs);
    

    【讨论】:

    • 你复制了我的代码并粘贴了这个页面,看看提出这个问题的 stackoverflow 吗?
    • 是的,没错,但我想帮助提出这个问题的人。我对这段代码有一个谜团,我保存了图标,当我重命名它时,一个丑陋的图标变得更好看。
    猜你喜欢
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2011-01-29
    相关资源
    最近更新 更多