我无法将图标导入我的应用程序。我有一个主表单,我正在尝试通过Icon
.Properties
图像已经是.ico
格式:这是我正在尝试使用的图标的链接。
有谁知道为什么 Microsoft Visual Studio 会显示此错误?
任何帮助都会很棒。
我无法将图标导入我的应用程序。我有一个主表单,我正在尝试通过Icon
.Properties
图像已经是.ico
格式:这是我正在尝试使用的图标的链接。
有谁知道为什么 Microsoft Visual Studio 会显示此错误?
任何帮助都会很棒。
我最近有这个错误。一些建议:
我们有一个应用程序可以在 99% 的计算机上正常运行,但在一台笔记本电脑上它会弹出此错误。
看起来我们的问题是笔记本电脑用户将屏幕文本/图像大小设置为 150%。这可能会导致正常工作的图像不再工作。我们将看看这是否有效。
更新
评论者似乎有同样的问题。是的,我们通过将屏幕文本大小设置为小于 150% 解决了这个问题。
在第二次重新启动后,我自己在 Gimp 中打开并重新保存 .ico,然后我就可以导入它而没有任何错误。不太确定是什么导致了这个问题,但这只是一个怪异的错误。
感谢Xiaohuan ZHOU对这个问题的回答。此功能无损地将 PNG(包括透明度)转换为 .ICO 文件格式。
public void ConvertToIco(Image img, string file, int size)
{
Icon icon;
using (var msImg = new MemoryStream())
using (var msIco = new MemoryStream())
{
img.Save(msImg, ImageFormat.Png);
using (var bw = new BinaryWriter(msIco))
{
bw.Write((short)0); //0-1 reserved
bw.Write((short)1); //2-3 image type, 1 = icon, 2 = cursor
bw.Write((short)1); //4-5 number of images
bw.Write((byte)size); //6 image width
bw.Write((byte)size); //7 image height
bw.Write((byte)0); //8 number of colors
bw.Write((byte)0); //9 reserved
bw.Write((short)0); //10-11 color planes
bw.Write((short)32); //12-13 bits per pixel
bw.Write((int)msImg.Length); //14-17 size of image data
bw.Write(22); //18-21 offset of image data
bw.Write(msImg.ToArray()); // write image data
bw.Flush();
bw.Seek(0, SeekOrigin.Begin);
icon = new Icon(msIco);
}
}
using (var fs = new FileStream(file, FileMode.Create, FileAccess.Write))
{
icon.Save(fs);
}
}