<PackageReference Include="System.Drawing.Common" Version="9.0.10" />

PICTDESC

struct PICTDESC
Contains parameters to create a picture object through the OleCreatePictureIndirect function.
using System; using System.CodeDom.Compiler; using System.Drawing; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using Windows.Win32.Foundation; using Windows.Win32.Graphics.Gdi; using Windows.Win32.Graphics.GdiPlus; using Windows.Win32.UI.WindowsAndMessaging; namespace Windows.Win32.System.Ole { [NullableContext(1)] [Nullable(0)] [GeneratedCode("Microsoft.Windows.CsWin32", "0.3.106+a37a0b4b70")] internal struct PICTDESC { [StructLayout(LayoutKind.Explicit)] [NullableContext(0)] [GeneratedCode("Microsoft.Windows.CsWin32", "0.3.106+a37a0b4b70")] internal struct _Anonymous_e__Union { [GeneratedCode("Microsoft.Windows.CsWin32", "0.3.106+a37a0b4b70")] internal struct _bmp_e__Struct { internal HBITMAP hbitmap; internal HPALETTE hpal; } [GeneratedCode("Microsoft.Windows.CsWin32", "0.3.106+a37a0b4b70")] internal struct _wmf_e__Struct { internal HMETAFILE hmeta; internal int xExt; internal int yExt; } [GeneratedCode("Microsoft.Windows.CsWin32", "0.3.106+a37a0b4b70")] internal struct _icon_e__Struct { internal HICON hicon; } [GeneratedCode("Microsoft.Windows.CsWin32", "0.3.106+a37a0b4b70")] internal struct _emf_e__Struct { internal HENHMETAFILE hemf; } [FieldOffset(0)] internal _bmp_e__Struct bmp; [FieldOffset(0)] internal _wmf_e__Struct wmf; [FieldOffset(0)] internal _icon_e__Struct icon; [FieldOffset(0)] internal _emf_e__Struct emf; } internal uint cbSizeofstruct; private uint _picType; internal _Anonymous_e__Union Anonymous; internal PICTYPE picType { get { return (PICTYPE)_picType; } set { _picType = (uint)value; } } public static PICTDESC FromBitmap(IPointer<GpBitmap> bitmap, HPALETTE paletteHandle = default(HPALETTE)) { PICTDESC pICTDESC = default(PICTDESC); pICTDESC.picType = PICTYPE.PICTYPE_BITMAP; PICTDESC result = pICTDESC; result.Anonymous.bmp.hbitmap = bitmap.GetHBITMAP(); result.Anonymous.bmp.hpal = paletteHandle; return result; } public static PICTDESC FromIcon(IIcon icon, bool copy) { PICTDESC pICTDESC = default(PICTDESC); pICTDESC.picType = PICTYPE.PICTYPE_ICON; PICTDESC result = pICTDESC; Size size = icon.Size; result.Anonymous.icon.hicon = (copy ? ((HICON)PInvokeCore.CopyImage(icon.Handle, GDI_IMAGE_TYPE.IMAGE_ICON, size.Width, size.Height, IMAGE_FLAGS.LR_DEFAULTCOLOR).Value) : icon.Handle); GC.KeepAlive(icon); return result; } public static PICTDESC FromMetafile(IPointer<GpMetafile> metafile) { PICTDESC pICTDESC = default(PICTDESC); pICTDESC.picType = PICTYPE.PICTYPE_ENHMETAFILE; PICTDESC result = pICTDESC; result.Anonymous.emf.hemf = metafile.GetHENHMETAFILE(); return result; } public static PICTDESC FromImage(IImage image) { IPointer<GpBitmap> pointer = image as IPointer<GpBitmap>; if (pointer != null) return FromBitmap(pointer, default(HPALETTE)); IPointer<GpMetafile> pointer2 = image as IPointer<GpMetafile>; if (pointer2 == null) throw new InvalidOperationException(); return FromMetafile(pointer2); } } }