我正在尝试使用System.Windows.Clipboard该类从剪贴板获取图像:
var bitmapSource = System.Windows.Clipboard.GetImage();
当通过 PrintScreen 键复制图像时,它可以正常工作。但是,当从医疗应用程序复制图像时,出现以下异常:
System.OutOfMemoryException: Insufficient memory to continue the execution of the program.
at System.Runtime.InteropServices.ComTypes.IDataObject.GetData(FORMATETC& format, STGMEDIUM& medium)
at System.Windows.DataObject.OleConverter.GetDataInner(FORMATETC& formatetc, STGMEDIUM& medium)
at System.Windows.DataObject.OleConverter.GetDataFromOleOther(String format, DVASPECT aspect, Int32 index)
at System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert, DVASPECT aspect, Int32 index)
at System.Windows.DataObject.OleConverter.GetData(String format, Boolean autoConvert)
图像在 Paint 和 Word 上粘贴良好,因此图像被正确复制到剪贴板。这不是一个巨大的图像,所以我绝对没有内存不足。有任何想法吗?
调用Clipboard.GetDataObject().GetFormats()返回以下内容:
{string[11]}
[0]: "Rich Text Format"
[1]: "MetaFilePict"
[2]: "PNG+Office Art"
[3]: "Office Drawing Shape Format"
[4]: "DeviceIndependentBitmap"
[5]: "Bitmap"
[6]: "System.Drawing.Bitmap"
[7]: "System.Windows.Media.Imaging.BitmapSource"
[8]: "Format17"
[9]: "EnhancedMetafile"
[10]: "System.Drawing.Imaging.Metafile"
我尝试Clipboard.GetData(format)了上述每种格式,唯一返回非空对象的格式是“PNG+Office Art”、“Office Drawing Shape Format”、“Format17”和“EnhancedMetafile”。
HUX布斯
相关分类