コントロールを描画した画像でフタをする方法

 バックグラウンドで時間のかかる処理を行った場合、前述の方法だと、フォームの移動時にPaintイベントが発生しないため、コントロールがフォームから消え去る現象が生じます。

 アニメ「キャッツ・アイ」では、監視カメラの真ん前に無人状態の風景写真を貼り付け、監視員がモニターに映ったその写真を実際の映像だと勘違いしている間に、カメラの前を横切るというシーンがありました。ここではそんな偽の画像を用いることで、コントロール処理を隠す方法を解説します。

 .NET Framework 2.0にはフォームのスクリーンショットを取得するためのメソッドControl.DrawToBitmapが用意されていますが、このメソッドはWebBrowserコントロールなどのActiveXコントロールを反映されないため、ここではWindows XPから追加されたAPI「PrintWindow」を用い、この関数で取得した画像をフォームの最前面に貼り付けています。