如何截屏并保存到文件中Xamarin.Mac
How to capture the screen and save it to the file in Xamarin.Mac
我不是经验丰富的开发人员,我遇到了问题。
我不懂怎么截图保存到文件里
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
private static extern IntPtr CGWindowListCreateImage(RectangleF screenBounds, CGWindowListOption windowOption, uint windowID, GWindowImageOption imageOption);
partial void ButtonClicked (Foundation.NSObject sender) {
IntPtr screenShot = CGWindowListCreateImage ((RectangleF)NSScreen.MainScreen.Frame, CGWindowListOption.IncludingWindow,
0, CGWindowImageOption.Default);
CGImage img = new CGImage(screenShot);
NSBitmapImageRep imgRep = new NSBitmapImageRep(img);
NSImage imgf = new NSImage(img, NSScreen.MainScreen.Frame.Size);
}
不确定它是否正常工作。有人可以帮忙吗?
此代码段将捕获当前屏幕并将结果以 PNG 格式保存到桌面:
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
static extern IntPtr CGWindowListCreateImage(CGRect screenBounds, CGWindowListOption windowOption, uint windowID, CGWindowImageOption imageOption);
public override void ViewDidLoad()
{
base.ViewDidLoad();
using (var pool = new NSAutoreleasePool())
{
CGRect fullScreenBounds = NSScreen.MainScreen.Frame;
IntPtr imageRef = CGWindowListCreateImage(fullScreenBounds, CGWindowListOption.All, 0, CGWindowImageOption.Default);
var cgImage = new CGImage(imageRef);
var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Whosebug.png");
var fileURL = new NSUrl(filePath, false);
var imageDestination = CGImageDestination.Create(fileURL, UTType.PNG, 1);
imageDestination.AddImage(cgImage);
imageDestination.Close();
}
}
我不是经验丰富的开发人员,我遇到了问题。
我不懂怎么截图保存到文件里
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
private static extern IntPtr CGWindowListCreateImage(RectangleF screenBounds, CGWindowListOption windowOption, uint windowID, GWindowImageOption imageOption);
partial void ButtonClicked (Foundation.NSObject sender) {
IntPtr screenShot = CGWindowListCreateImage ((RectangleF)NSScreen.MainScreen.Frame, CGWindowListOption.IncludingWindow,
0, CGWindowImageOption.Default);
CGImage img = new CGImage(screenShot);
NSBitmapImageRep imgRep = new NSBitmapImageRep(img);
NSImage imgf = new NSImage(img, NSScreen.MainScreen.Frame.Size);
}
不确定它是否正常工作。有人可以帮忙吗?
此代码段将捕获当前屏幕并将结果以 PNG 格式保存到桌面:
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
static extern IntPtr CGWindowListCreateImage(CGRect screenBounds, CGWindowListOption windowOption, uint windowID, CGWindowImageOption imageOption);
public override void ViewDidLoad()
{
base.ViewDidLoad();
using (var pool = new NSAutoreleasePool())
{
CGRect fullScreenBounds = NSScreen.MainScreen.Frame;
IntPtr imageRef = CGWindowListCreateImage(fullScreenBounds, CGWindowListOption.All, 0, CGWindowImageOption.Default);
var cgImage = new CGImage(imageRef);
var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Whosebug.png");
var fileURL = new NSUrl(filePath, false);
var imageDestination = CGImageDestination.Create(fileURL, UTType.PNG, 1);
imageDestination.AddImage(cgImage);
imageDestination.Close();
}
}