【C#,WPF】コントロールやウィンドウを画像キャプチャする
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コントロールへの表示が可能です。
コメントを残す