2016-05-14 6 views
0

私は経験豊かな開発者ではなく、問題があります。画面をキャプチャして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); 
     } 

正常に動作しているかどうかわかりません。誰も助けることができますか?

答えて

1

このコードは、現在の画面をキャプチャして、デスクトップに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), "StackOverflow.png"); 
     var fileURL = new NSUrl(filePath, false); 
     var imageDestination = CGImageDestination.Create(fileURL, UTType.PNG, 1); 
     imageDestination.AddImage(cgImage); 
     imageDestination.Close(); 
    } 
} 
関連する問題