我正在尝试将位图转换为图标。但是有一些错误,因为结果文件是空白的。
private void btnCnvrtSave_Click(object sender, EventArgs e)
{
Bitmap bmp = new Bitmap(sourceFile); //sourceFile = openfiledialog.FileName;
IntPtr Hicon = bmp.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!");
//Process.Start(sfd.FileName);
}
我试了很多,但还是不能解决这个问题。请告诉我问题出在哪里。
发布于 2011-11-19 23:21:04
这段代码唯一的问题是它支持高达128x128的位图图像。
如果位图的大小较大,则会生成空白ico文件。
发布于 2011-11-18 05:24:34
本文将介绍如何将位图转换为图标。
http://www.go4expert.com/forums/showthread.php?t=19250
它看起来和你的非常相似:
using (Cbitmap = new Bitmap(sourceImage.Text))
{
Cbitmap.MakeTransparent(Color.White);
System.IntPtr icH = Cbitmap.GetHicon();
Icon ico = Icon.FromHandle(icH);
}
using (System.IO.FileStream f = new System.IO.FileStream(destinationFldr.Text + "\\image.ico", System.IO.FileMode.OpenOrCreate))
{
ico.Save(f);
}
试一试。
已编辑:添加了using语句。
发布于 2011-11-18 05:30:16
此外,此SO question链接到how to convert an image to an icon,这可能会将您引向正确的方向。
但是,请注意,需要修改所编写的代码以避免句柄泄漏。但solution在这个问题上也有关联。
https://stackoverflow.com/questions/8174393
复制相似问题