将位图转换为图标

我正在尝试将图像从Bitmap转换为Windows图标。 这是代码。

 private void btnCnvrtSave_Click(object sender, EventArgs e) { Bitmap bmp = (Bitmap)picturePanel.BackgroundImage; Bitmap newBmp = new Bitmap(bmp); Bitmap targetBmp = newBmp.Clone(new Rectangle(0, 0, newBmp.Width, newBmp.Height), PixelFormat.Format64bppArgb); IntPtr Hicon = targetBmp.GetHicon(); Icon myIcon = Icon.FromHandle(Hicon); SaveFileDialog sfd = new SaveFileDialog(); sfd.Title = "Save Icon"; sfd.Filter = "Icon|*.ico"; sfd.ShowDialog(); FileStream fileStream = new FileStream(sfd.FileName,FileMode.OpenOrCreate); myIcon.Save(fileStream); fileStream.Flush(); fileStream.Close(); MessageBox.Show("Image is converted successfully!"); } 

代码工作正常,但问题是,当我将图片转换为图标时,转换后的图标会丢失其真实颜色和渐变(如图所示)。 那么,有没有什么方法可以转换图像而不会失去它的颜色?

这就是我的图标。

转换前后

这是.Net的一个已知问题,因为它没有图标编码器。 有关可能的解决方法,请参阅以下内容。

创建有效的图标文件

将位图转换为图标问题