/// <param name="fOwn"> /// <see cref="BOOL.TRUE"/> if the picture object is to destroy its picture when the object is destroyed. /// (The picture handle in the <paramref name="pictdesc"/>.) /// </param> public unsafe static object OleCreatePictureIndirect(ref PICTDESC pictdesc, ref Guid refiid, BOOL fOwn) { pictdesc.cbSizeofstruct = (uint)sizeof(PICTDESC); fixed(PICTDESC *p = &pictdesc) { return(OleCreatePictureIndirect(p, ref refiid, fOwn)); } }
public static PICTDESC FromMetafile(Metafile metafile) { PICTDESC desc = new PICTDESC { picType = PICTYPE.ENHMETAFILE }; desc.Union.emf.hemf = metafile.GetHenhmetafile(); return(desc); }
public static PICTDESC FromBitmap(Bitmap bitmap, IntPtr paletteHandle = default) { PICTDESC desc = new PICTDESC { picType = PICTYPE.BITMAP }; desc.Union.bmp.hbitmap = bitmap.GetHbitmap(); desc.Union.bmp.hpal = paletteHandle; return(desc); }
private static object GetTransparentIPictureDispFromBitmapHandle( IntPtr hIntPtr ) { int iResult; Guid objGuid = new Guid("00020400-0000-0000-C000-000000000046"); PICTDESC tPICTDESC = new PICTDESC(hIntPtr); tPICTDESC.SizeOfStruct = Marshal.SizeOf(tPICTDESC); stdole.IPictureDisp objPicture; iResult = OleCreatePictureIndirect(ref tPICTDESC, ref objGuid, 1, out objPicture); return objPicture; }
public override object ConvertManagedToNative(object managedValue, Com2PropertyDescriptor pd, ref bool cancelSet) { // Don't cancel the set cancelSet = false; if (_lastManaged?.Equals(managedValue) == true) { object target = _pictureRef?.Target; if (target is not null) { return(target); } } // We have to build an IPicture if (managedValue is not null) { BOOL own = BOOL.FALSE; PICTDESC pictdesc; if (managedValue is Icon icon) { pictdesc = PICTDESC.FromIcon(icon, copy: false); } else if (managedValue is Bitmap bitmap) { pictdesc = PICTDESC.FromBitmap(bitmap); own = BOOL.TRUE; } else { Debug.Fail($"Unknown Image type: {managedValue.GetType().Name}"); return(null); } Guid iid = typeof(IPicture).GUID; IPicture pict = (IPicture)OleCreatePictureIndirect(ref pictdesc, ref iid, own); _lastManaged = managedValue; _lastNativeHandle = (IntPtr)pict.Handle; _pictureRef = new WeakReference(pict); return(pict); } else { _lastManaged = null; _lastNativeHandle = IntPtr.Zero; _pictureRef = null; return(null); } }
private static PICTDESC GetPICTDESCFromPicture(Image image) { if (image is Bitmap bmp) { return(PICTDESC.FromBitmap(bmp)); } if (image is Metafile mf) { return(PICTDESC.FromMetafile(mf)); } throw new ArgumentException("AXUnknownImage", nameof(image)); }
public static PICTDESC FromIcon(Icon icon, bool copy) { PICTDESC desc = new PICTDESC { picType = PICTYPE.ICON }; desc.Union.icon.hicon = copy ? User32.CopyImage( icon.Handle, User32.IMAGE.ICON, icon.Width, icon.Height, User32.LR.DEFAULTCOLOR) : icon.Handle; GC.KeepAlive(icon); return(desc); }
public static PICTDESC CreateWinMetafilePICTDESC(IntPtr hmetafile, int x, int y) { PICTDESC pictdesc = new PICTDESC(); pictdesc.cbSizeOfStruct = 20; pictdesc.picType = Ole.PICTYPE_METAFILE; pictdesc.union1 = hmetafile; pictdesc.union2 = x; pictdesc.union3 = y; return pictdesc; }
public static PICTDESC CreateIconPICTDESC(IntPtr hicon) { PICTDESC pictdesc = new PICTDESC(); pictdesc.cbSizeOfStruct = 12; pictdesc.picType = Ole.PICTYPE_ICON; pictdesc.union1 = hicon; return pictdesc; }
public static PICTDESC CreateBitmapPICTDESC(IntPtr hbitmap, IntPtr hpal) { PICTDESC pictdesc = new PICTDESC(); pictdesc.cbSizeOfStruct = 16; pictdesc.picType = Ole.PICTYPE_BITMAP; pictdesc.union1 = hbitmap; pictdesc.union2 = (int)(((long)hpal) & 0xffffffff); pictdesc.union3 = (int)(((long)hpal) >> 32); return pictdesc; }
public static IPicture GetIPictureFromPicture(Image image) { PICTDESC desc = GetPICTDESCFromPicture(image); return((IPicture)OleCreatePictureIndirect(ref desc, in s_ipicture_Guid, fOwn: BOOL.TRUE)); }
public static IPicture GetIPictureFromCursor(IntPtr cursorHandle) { PICTDESC desc = PICTDESC.FromIcon(Icon.FromHandle(cursorHandle), copy: true); return((IPicture)OleCreatePictureIndirect(ref desc, in s_ipicture_Guid, fOwn: BOOL.TRUE)); }
public static extern IPicture OleCreatePictureIndirect(PICTDESC pictdesc, [In] ref Guid refiid, bool fOwn);
public static extern void OleCreatePictureIndirect(ref PICTDESC pPictDesc, ref Guid riid, bool fOwn, out stdole.StdPicture ppvObj);
public static PICTDESC CreateEnhMetafilePICTDESC(IntPtr hEMF) { PICTDESC pictdesc = new PICTDESC(); pictdesc.cbSizeOfStruct = 12; pictdesc.picType = Ole.PICTYPE_ENHMETAFILE; pictdesc.union1 = hEMF; return pictdesc; }
public static IPictureDisp GetIPictureDispFromPicture(Image image) { PICTDESC desc = GetPICTDESCFromPicture(image); return((IPictureDisp)OleCreatePictureIndirect(ref desc, ref ipictureDisp_Guid, fOwn: BOOL.TRUE)); }
static extern int OleCreatePictureIndirect( ref PICTDESC pPictDesc, ref Guid riid, int fOwn, out stdole.IPictureDisp ppvObj );
public static extern int OleCreatePictureIndirect(ref PICTDESC pPictDesc, ref Guid riid, int fOwn, [MarshalAs(UnmanagedType.IDispatch)] ref object ppvObj);
/// <param name="fOwn"> /// <see cref="BOOL.TRUE"/> if the picture object is to destroy its picture when the object is destroyed. /// (The picture handle in the <paramref name="pictdesc"/>.) /// </param> public unsafe static object OleCreatePictureIndirect(ref PICTDESC pictdesc, in Guid refiid, BOOL fOwn)
public static stdole.StdPicture LoadPictureRes(string name) { Bitmap bmp = new Bitmap(Assembly.GetExecutingAssembly().GetManifestResourceStream(name)); //for (int i = 0; i < bmp.Palette.Entries.Length; i++ ) //bmp.Palette.Entries[i] = Color.FromArgb(0, 254, 0); //CreateMappedBitmap(IDE.AddInInstance, BMP_ID, 0, g_map, 1) PICTDESC pPictDesc = new PICTDESC(bmp); Guid riid = new Guid("7BF80980-BF32-101A-8BBB-00AA00300CAB"); stdole.StdPicture ppvObj = null; OleCreatePictureIndirect(ref pPictDesc, ref riid, true, out ppvObj); bmp.Dispose(); return ppvObj; }