首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将位图转换为图标

将位图转换为图标
EN

Stack Overflow用户
提问于 2011-11-18 05:13:40
回答 3查看 33.7K关注 0票数 21

我正在尝试将位图转换为图标。但是有一些错误,因为结果文件是空白的。

代码语言:javascript
复制
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);
}

我试了很多,但还是不能解决这个问题。请告诉我问题出在哪里。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-19 23:21:04

这段代码唯一的问题是它支持高达128x128的位图图像。

如果位图的大小较大,则会生成空白ico文件。

票数 6
EN

Stack Overflow用户

发布于 2011-11-18 05:24:34

本文将介绍如何将位图转换为图标。

http://www.go4expert.com/forums/showthread.php?t=19250

它看起来和你的非常相似:

代码语言:javascript
复制
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语句。

票数 8
EN

Stack Overflow用户

发布于 2011-11-18 05:30:16

此外,此SO question链接到how to convert an image to an icon,这可能会将您引向正确的方向。

但是,请注意,需要修改所编写的代码以避免句柄泄漏。但solution在这个问题上也有关联。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8174393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档