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

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


スポンサーリンク

コメントを残す

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

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