增加一个函数

This commit is contained in:
Sunny 2020-06-10 22:26:33 +08:00
parent c84fbd645d
commit 0072b9255e
4 changed files with 43 additions and 0 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -567,5 +567,48 @@ namespace Sunny.UI
return rotatedBmp;
}
/// <summary>
/// 转换Image为Icon
/// https://www.cnblogs.com/ahdung/p/ConvertToIcon.html
/// </summary>
/// <param name="image">图片</param>
/// <returns></returns>
public static Icon ToIcon(this Image image)
{
if (image == null)
{
return null;
}
using (MemoryStream msImg = new MemoryStream(), msIco = new MemoryStream())
{
image.Save(msImg, ImageFormat.Png);
using (var bin = new BinaryWriter(msIco))
{
//写图标头部
bin.Write((short)0); //0-1保留
bin.Write((short)1); //2-3文件类型。1=图标, 2=光标
bin.Write((short)1); //4-5图像数量图标可以包含多个图像
bin.Write((byte)image.Width); //6图标宽度
bin.Write((byte)image.Height); //7图标高度
bin.Write((byte)0); //8颜色数若像素位深>=8填0。这是显然的达到8bpp的颜色数最少是256byte不够表示
bin.Write((byte)0); //9保留。必须为0
bin.Write((short)0); //10-11调色板
bin.Write((short)32); //12-13位深
bin.Write((int)msImg.Length); //14-17位图数据大小
bin.Write(22); //18-21位图数据起始字节
//写图像数据
bin.Write(msImg.ToArray());
bin.Flush();
bin.Seek(0, SeekOrigin.Begin);
return new Icon(msIco);
}
}
}
}
}