public byte[] GetResDirectoryData() { // recreate the Icon Directory resource data var ms = new MemoryStream(); var wtr = new BinaryWriter(ms); var dir = new IconDirectory { wReserved = 0, wType = (ushort)(Type == IconType.Icon ? 1u : 2u), wCount = (ushort)_images.Count }; dir.Write(wtr); foreach (var directoryMember in _images) { var image = (IconImage)directoryMember; var entry = new ResIconDirectoryEntry { bWidth = (byte)image.Size.Width, bHeight = (byte)image.Size.Height, bColorCount = image.ColorCount, bReserved = 0, wPlanes = image.Planes, wBitCount = image.BitCount, dwBytesInRes = (uint)image.ImageData.Length, wId = (ushort)image.ResourceData.Lang.Name.Identifier.NativeId.ToInt32() }; // gotta love the load of dereferencing going on here entry.Write(wtr); } return(ms.ToArray()); }
public Byte[] GetResDirectoryData() { // recreate the Icon Directory resource data MemoryStream ms = new MemoryStream(); BinaryWriter wtr = new BinaryWriter(ms); IconDirectory dir = new IconDirectory(); dir.wReserved = 0; dir.wType = (ushort)(Type == IconType.Icon ? 1u : 2u); dir.wCount = (ushort)_images.Count; dir.Write(wtr); foreach (IconImage image in _images) { ResIconDirectoryEntry entry = new ResIconDirectoryEntry(); entry.bWidth = (byte)image.Size.Width; entry.bHeight = (byte)image.Size.Height; entry.bColorCount = image.ColorCount; entry.bReserved = 0; entry.wPlanes = image.Planes; entry.wBitCount = image.BitCount; entry.dwBytesInRes = (uint)image.ImageData.Length; entry.wId = (ushort)image.ResourceData.Lang.Name.Identifier.NativeId.ToInt32(); // gotta love the load of dereferencing going on here entry.Write(wtr); } return(ms.ToArray()); }