kuwayoshi.com

【C#,WPF】コントロールやウィンドウを画像キャプチャする

eye3

WPFで画面をキャプチャする処理を実装したかったので、その方法について調べてみました。
画面内のコントロールや指定した座標を元に、ビットマップを生成し、画像として保存やImageコントロールに表示する方法をまとめていきます。

キャプチャ処理を実装する前の事前準備

はじめに、この記事で紹介するコードの動作確認は「Visual Studio Professional 2013」及び「Visual Studio Community 2015」を使用しています。
まず、プロジェクトに以下の参照設定を追加しておきます。

  • PresentationCore
  • PresentationFramework
  • System.Drawing
  • WindowsBase

画像キャプチャのサンプルプロジェクト

GitHubに今回のサンプルプロジェクト一式をアップロードしています。
GitHub – Kuwayoshi/ScreenCapture
ソースコードを記事に載せると長くなってしまうので、上記ページからサンプルをダウンロードし、各ファイルのコードをご覧ください。

サンプルプロジェクトのソースコード解説

サンプルの画像キャプチャ処理について解説します。
今回は「MainWindow」ウィンドウ内の「dgTarget」データグリッドをキャプチャします。
キャプチャしたビットマップは「imgResult」Imageコントロールで画面に表示し、result.pngという名前でイメージ保存しています。

まとめ:画面領域を指定して画像キャプチャ保存を実装

画面(ウィンドウ内)の領域をビットマップキャプチャする方法を紹介しました。
サンプルコードではデータグリッドをキャプチャしましたが、targetRectに任意の値を指定することで、ウィンドウ内の領域をどこでもキャプチャすることができます。
またキャプチャしたビットマップは、画像保存やImageコントロールへの表示が可能です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください