Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

【C#】デスクトップを範囲指定してキャプチャする

Cururuから移行。

C#2.0でデスクトップをキャプチャするサンプルです。指定範囲をキャプチャしてBitmapで返します。

// using System.Drawing

private Image GetCaptureImage(Rectangle rect) {
    // 指定された範囲と同サイズのBitmapを作成する
    Image img = new Bitmap(
                    rect.Width,
                    rect.Height,
                    Imaging.PixelFormat.Format32bppArgb);
 
    // Bitmapにデスクトップのイメージを描画する
    using (Graphics g = Graphics.FromImage(img)) {
        g.CopyFromScreen(
            rect.X,
            rect.Y,
            0,
            0,
            rect.Size,
            CopyPixelOperation.SourceCopy);
    }
 
    return img;
}


Rectangleで範囲指定します。

Image img = GetCaptureImage(new Rectangle(100, 100, 200, 200));

参考:
2006-07-17 - PowerShell Memo
PowerShellでスクリーンキャプチャを行うサンプルです。 ...

Graphics.CopyFromScreen メソッド (Int32, Int32, Int32, Int32, Size, CopyPixelOperation) (System.Drawing)
画面から Graphics の描画サーフェイスへの、ピクセルの四角形に対応する色データのビット ブロック転送を実行します。 ...