C#でデスクトップ画面をキャプチャする

このエントリーをはてなブックマークに追加

chakemiです。

本日は、C#でデスクトップの画面をキャプチャしてみようと思います。

まずは、簡単に、.NET FrameworkのGraphics.CopyFromScreenメソッドを使ってみます。

 

開発環境:
WindowsXP SP3
VisualC#2010Express

 
はじめにScreenクラスを使用して、画面のサイズを取得してBitmapオブジェクトを用意します。

Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);

 
 
Bitmapクラスからは、Screenからコピーするメソッドが存在しないため、代わりにGraphicsオブジェクトをbmpを元に生成します。

Graphics graph = Graphics.FromImage(bmp);

 
 
GraphicsクラスのCopyFromScreenメソッドを使用して、ScreenをBitmapオブジェクトに色データのビットブロック転送を行ないます。

graph.CopyFromScreen(new Point(0, 0), new Point(0, 0), bmp.Size);

第一引数に転送先の四角形の左上隅の点、第二引数に転送元の四角形の左上隅の点、第三引数に転送される領域のサイズを指定します。

 
 
転送が完了したら、不要なGraphicsオブジェクトを破棄します。

graph.Dispose();

 
 
あとは、BitmapオブジェクトをPictureBoxに描画したり、bmpファイルに保存すれば出来上がり♪

Bitmap bmp = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
Graphics graph = Graphics.FromImage(bmp);
graph.CopyFromScreen(new Point(0, 0), new Point(0, 0), bmp.Size);
graph.Dispose();

pictureBox1.Image = bmp;
bmp.Save(@"C:\test.bmp");

return top