現在、Windows.Formsアプリケーションに取り組んでいます。これは基本的に単純な動き検出の問題です。
フォームにボタンがあり、押すと次のことを行うバックグラウンドワーカーが起動します。
- ディスクから画像を取得する
- バッファとして使用する新しいビットマップを作成します。
- モーション検知を実行する
- モーション検知の結果から、バッファを更新します(バッファの描画面を使用)
- 基本的に、バッファのクローンで構成される引数を使用してProgressChangedイベントを発生させます
(sender as BackgroundWorker).ReportProgress((Bitmap)buffer.Clone())
次に、Progress Changedイベントで、バッファを画面に描画します。
if (!PnlImage.IsDisposed)
PnlImage.CreateGraphics().DrawImageUnscaled(buffer, 0, 0);
これが更新された画像を画面に描画するための最良の方法であるかどうか疑問に思わずにはいられません。誰かが私ができる改善を提案できますか?ありがとう。
編集:その後、.NET Framework 4を使用するようにプログラムを更新しましたが、BackgroundWorkerは使用していません。代わりに、System.Threading.Tasks名前空間を使用し、Invokeを使用してタスク内から背景画像を更新しています。
すべての返信に感謝します。