1 回答

TA貢獻1876條經(jīng)驗 獲得超6個贊
我相信你的答案就在這里。簡而言之:
結(jié)論是,如果您在 WPF 中使用剪貼板,并且您得到的 System.OutOfMemoryExceptions 似乎沒有任何意義,那么您可能忘記將 SerializableAttribute 添加到您放置在剪貼板上的任何類中。
那么這個醫(yī)療應用程序是您的應用程序嗎?因為看起來問題在于如何將圖像放入剪貼板,而不是如何檢索圖像。
更新:由于這不是您的應用程序,那么您可能不得不忍受他們的錯誤(或 中的錯誤Clipboard.GetData())。的源代碼Clipboard.GetImage()是這樣的:
public static Image GetImage() {
var dataObject = Clipboard.GetDataObject();
if (dataObject != null) {
return dataObject.GetData(DataFormats.Bitmap, true) as Image;
}
return null;
}
請注意,您的堆棧跟蹤表明異常發(fā)生在GetData(). 查看源代碼,這意味著調(diào)用GetDataObject()有效,這意味著您可以(理論上)使用GetDataObject()自己并將其轉(zhuǎn)換IDataObject為您可以使用的東西。
可能需要一些探索才能弄清楚發(fā)生了什么。您可能可以IDataObject.GetFormats()用來檢查它是什么,然后IDataObject.GetData()用來獲取該格式的數(shù)據(jù)。
更新 2:此處的解決方案為我們指明了正確的方向,但需要進行一些修改:
var data = Clipboard.GetDataObject();
var ms = (MemoryStream) data.GetData("PNG+Office Art");
var image = Image.FromStream(ms)
- 1 回答
- 0 關注
- 173 瀏覽
添加回答
舉報