web-dev-qa-db-ja.com

.NETを使用してスクリーンショットをキャプチャする

可能性のある複製:
ビットマップで画面をキャプチャする方法

特定のボタンが押されるたびに現在の画面のスナップショットをキャプチャするアプリケーションを作成する必要があります。

私はよく検索しましたが、現在のウィンドウをキャプチャする方法を見つけました。

.NETでこれを行う方法を理解するのを手伝ってもらえますか?

これを手動で行うには、印刷画面を押して、ペイントを使用して画像を保存します。私は同じことをする必要がありますが、私はプログラムでそうしたいです。

38
Bhavik Goyal

.NET Frameworkを使用してスクリーンショットを取得することは確かに可能です。最も簡単な方法は、新しいBitmapオブジェクトを作成し、 Graphics.CopyFromScreenメソッド

サンプルコード:

using (Bitmap bmpScreenCapture = new Bitmap(Screen.PrimaryScreen.Bounds.Width, 
                                            Screen.PrimaryScreen.Bounds.Height))
using (Graphics g = Graphics.FromImage(bmpScreenCapture))
{
    g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
                     Screen.PrimaryScreen.Bounds.Y,
                     0, 0,
                     bmpScreenCapture.Size,
                     CopyPixelOperation.SourceCopy);
}

警告:この方法は、階層化されたウィンドウでは正しく機能しません。 Hans Passantの答え here は、スクリーンショットでそれらを取得するために必要なより複雑な方法を説明しています。

51
Cody Gray