Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 将图像转换为.ICO文件而不丢失颜色深度(并且不安装其他实用程序)?_Vb.net_Winforms_Visual Studio 2010_Image_Icons - Fatal编程技术网

Vb.net 将图像转换为.ICO文件而不丢失颜色深度(并且不安装其他实用程序)?

Vb.net 将图像转换为.ICO文件而不丢失颜色深度(并且不安装其他实用程序)?,vb.net,winforms,visual-studio-2010,image,icons,Vb.net,Winforms,Visual Studio 2010,Image,Icons,在一个表单中,我有一个名为mainlogomagelist的ImageList包含一个100x100像素的32位彩色深度图像。这是我的应用程序徽标 我懒得设置图标编辑器并编辑该图标的图标,或者将图像转换为.ICO文件。(嗯,我不允许安装自定义实用程序。) 要设置窗体的图标,我使用 Icon = IconFromImage(MainLogoImageList.Images(0)) 在OnLoad事件处理程序中设置窗口图标 在我的“关于”框中,我有一个没有图像的PictureBox。在其OnLoa

在一个表单中,我有一个名为
mainlogomagelist
ImageList
包含一个100x100像素的32位彩色深度图像。这是我的应用程序徽标

我懒得设置图标编辑器并编辑该图标的图标,或者将图像转换为.ICO文件。(嗯,我不允许安装自定义实用程序。)

要设置窗体的图标,我使用

Icon = IconFromImage(MainLogoImageList.Images(0))
OnLoad
事件处理程序中设置窗口图标

在我的“关于”框中,我有一个没有图像的
PictureBox
。在其
OnLoad
事件中,我使用

LogoPictureBox.Image = MyMainForm.MainLogoImageList.Images(0)
Icon = IconFromImage(MyMainForm.MainLogoImageList.Images(0))
设置“关于”框的图标和内容

到目前为止,很好,从100x100像素的位图中创建的图标看起来很好

是否有一种简单的“无需任何实用工具”:-)方法将返回的图标保存到.ICO文件中,以便在加载为应用程序图标时保持颜色深度?我想准确使用
iconfrommage
创建的图标

使用

Dim S As New FileStream("MyAppIcon.ico", FileMode.Append, FileAccess.Write, FileShare.Write)
Icon.Save(S)
S.Close()
在主窗体的
OnLoad
事件处理程序中,将该.ICO文件作为应用程序图标加载到VS的“项目属性”对话框中,会生成一个明显转换为16种颜色的图标,看起来很糟糕


这是VB 10 Express。

按照明智的建议将其带回家,在那里编辑并转换

Gimp@home在工作

工作很好,看起来很棒


没有代码的解决方案总比没有解决方案好:-)

没有简单的方法可以做到这一点,您也不希望像这样维护代码。把文件带回家,转换成文件。@Hans Passant为什么不回答这个问题,这样我就可以接受它了。也许还有其他懒惰的人:)这家伙也很好奇,发现这个答案很有用。我不知道,这里真正重要的是你如何解决这个问题。不要犹豫,把它贴出来并标记为答案。在我自己多次找到最好的答案之后,我犹豫了一下,没有按照你的建议去做。但是——可以:)