概要

 C#で、画面のスクリーンショットを使用するツールを制作しようと考えています。
 ここで言う「スクリーンショット」とは、ディスプレイ全体のスクショに限らず、例えば「左上座標(100,100)から640x480の大きさ」といった指定ができるものを指します。
 元々はWPFで開発しており、その際は次のようなコードを書いていました。

// 切り取る左上座標を(left, top)、切り取る大きさを(width,height)とする
var image = new System.Drawing.Bitmap(
  width, height, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
using (var g = System.Drawing.Graphics.FromImage(image)) {
  g.CopyFromScreen(left, top, 0, 0, image.Size);
}

 ここで、Windows以外でも動くように出来ないかと考えた私は、Eto.FormsをNugetで落として使おうと判断しました。Eto.FormsにもBitmapクラスやGraphicsクラスがあったので、簡単に移植できると考え次のようなコードを書きました。

// 切り取る左上座標を(left, top)、切り取る大きさを(width,height)とする
var image = new Eto.Drawing.Bitmap(
  width, height, Eto.Drawing.PixelFormat.Format24bppRgb);
using (var g = Eto.Drawing.Graphics(image)) {
  g.CopyFromScreen(left, top, 0, 0, image.Size); //問題の箇所
}

 ところが、Eto.Drawing.GraphicsにはCopyFromScreenメソッドが存在しないということがここで判明しました。APIリファレンスを見てもそのことに違いはありませんし、かといってEto.Forms.Screenから直接Eto.Drawing.Bitmapを取り出す手段も存在しないようです。
 Windowsだけを考えればよかった時と違い、「WinAPIを叩く」といった手段を取れないことから、スクリーンショットをどう取得すればいいのか分からず困っています。

 上手くメソッドを組み合わせれば、スクリーンショットを取得することができるのでしょうか、それとも現状の仕様ではできないのでしょうか?