3
我試圖抓住屏幕截圖並使用Xamarin和C#在Mac上將其保存在磁盤上。我寫了下面的代碼:Xamarin - 如何獲取截圖並使用xamarin mac將其保存在磁盤上?
public static void TakeScreenshotAndSaveToDisk(string path)
{
var fullScreenBounds = NSScreen.MainScreen.Frame;
IntPtr ptr = CGWindowListCreateImage(fullScreenBounds, CGWindowListOption.OnScreenAboveWindow, 0, CGWindowImageOption.Default);
var cgImage = new CGImage(ptr);
var fileURL = new NSUrl(path, false);
var imageDestination = CGImageDestination.Create(new CGDataConsumer(fileURL), UTType.PNG, 1);
imageDestination.AddImage(cgImage);
imageDestination.Close();
imageDestination.Dispose();
fileURL.Dispose();
cgImage.Dispose();
}
該方法執行並且文件出現在正確的位置。如果我嘗試打開它,它會顯示爲空白。如果我點擊文件上的「獲取信息」,它將不會顯示預覽。 關閉我的應用後,圖像可以打開,「獲取信息」顯示預覽。
我在這裏做錯了什麼?在我看來,即使我在對象上調用Dispose(),資源也不會被釋放。
謝謝。
感謝Apineda。在CGDataConsumer對象上調用dispose是個竅門。 – BVintila