c# - 在C#中将图像转换为图标

标签 c# bitmap

我有一个将图像格式文件转换为图标文件的项目。但是,转换图像后,图像的颜色发生了变化。

这是我的代码

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

enter image description here

有人知道怎么解决吗?

最佳答案

Bitmap.GetHicon() 非常擅长创建在可以运行 .NET 代码的任何 Windows 版本上运行良好的图标。包括旧的 Windows 98 和 Windows 2000。还不支持花式图标的操作系统。

所以您得到的是一个只有 16 种颜色的图标,使用的是带有基本颜色的预制调色板。温和地说,这往往会产生令人失望的结果。

Bitmap 或 Icon 类没有获得更好结果的选项。一般来说,您需要使用图标编辑器来创建好的图标。其中应包括多个 不同大小和颜色深度的图像,以便它们可以很好地与任何视频适配器设置和任何操作系统版本配合使用。特别是将颜色从 1600 万减少到 256 或 16 种颜色是一项非常重要的操作,有多种方法可以做到,但没有一种是完美的。一个好的图标编辑器拥有使它足够好地工作所需的工具。


更新:成为一个非常过时的问题,XP 已经过时了。今天,您可以使用 this code 生成一个非常漂亮的图标。 .

关于c# - 在C#中将图像转换为图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17212704/

相关文章:

android - Camera2 - 获取静态捕获位图的最有效方式

android - 从 surfaceView android 获取 JPG 文件

C# 在未知对象中设置属性

c# - 如何在不使用 HttpContext 的情况下获取 Web 应用程序的当前配置?

android - 在位图上应用多重效果而不保存

android - BitmapFacotry.decodeByteArray 为有效图像的字节数组返回 null

Android:将图像转换为字节数组

c# - 检查 T 的 Nullabe 的 .HasValue 和 .Value

c# - 使用 C# GUI 应用程序通过在线提供商查询 MySQL 数据库

c# - WIF 和子域