byte[] GenerateByteArrayFromBitmapHandle(IntPtr bitmapHandle) { var bitmap = new IconNativeApi.BITMAP(); AllocateBitmapSpace(bitmapHandle, ref bitmap); try { FillBitmapBitsIntoHandle(bitmap); var bitmapSource = CreateBitmapSourceFromHandle(bitmapHandle, bitmap); return(imagePersistenceService.ConvertBitmapSourceToByteArray(bitmapSource)); } finally { imageNativeApi.DeleteObject(bitmapHandle); } }
public byte[] UnwrapStructure(IClipboardFormat format) { if (format.Number != ClipboardNativeApi.CF_DIBV5) { return(null); } var hBitmap = clipboardNativeApi.GetClipboardData(ClipboardNativeApi.CF_DIBV5); var ptr = generalNativeApi.GlobalLock(hBitmap); try { return(GetAllBytesFromBitmapHeader(ptr)); } finally { imageNativeApi.DeleteObject(ptr); } }