public static Icon Create(byte[] colors, int width, int height, PixelFormat format) { if (format != PixelFormat.Format32bppArgb) { throw new NotImplementedException(); } ICONIMAGE image = new ICONIMAGE(width, height, colors); ICONDIR dir = new ICONDIR( new ICONDIRENTRY[] { new ICONDIRENTRY(image, 0) }); dir.Entries[0].ImageOffset = dir.Size; Icon icon; binaryWriter.BaseStream.Position = 0; dir.Write(binaryWriter); image.Write(binaryWriter); binaryWriter.BaseStream.Position = 0; icon = new Icon(binaryWriter.BaseStream); return(icon); }
public static Icon Create(byte[] colors, int width, int height, PixelFormat format) { if (format != PixelFormat.Format32bppArgb) throw new NotImplementedException(); ICONIMAGE image = new ICONIMAGE(width, height, colors); ICONDIR dir = new ICONDIR( new ICONDIRENTRY[] { new ICONDIRENTRY(image, 0) } ); dir.Entries[0].ImageOffset = dir.Size; Icon icon; using (BinaryWriter bw = new BinaryWriter(new MemoryStream())) { dir.Write(bw); image.Write(bw); bw.BaseStream.Position = 0; icon = new Icon(bw.BaseStream); } return icon; }