【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コントロールへの表示が可能です。

Share

  • Twitter Shareボタン
  • Facebook Shareボタン
  • はてなブックマーク Shareボタン
  • LINE Shareボタン

コメントを残す

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。