我正在使用Xamarin和C#在Mac上尝试抓取屏幕截图并保存到磁盘。我编写了以下代码:
方法被执行后,文件出现在正确的位置。如果我尝试打开它,它会显示空白。如果我在文件上点击“获取信息”,它将不会显示预览。 当我关闭我的应用程序后,该图像可以被打开,并且“获取信息”显示预览。
我在这里做错了什么?在我的看来,资源并没有被释放,即使我对对象调用了Dispose()方法。
谢谢。
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()方法。
谢谢。