まず、私のプログラムについて説明します。
コントロールパネルとして使用する1つのwinformがあります。ここから、マウスを使用してデスクトップのスクリーン ショットを撮り、領域を定義することができます。切り取りツールがウィンドウ内でどのように機能するかによく似ています。
スクリーン ショットは、Form1 という別のフォームによって実行されるスクリーン ショット クラスを使用して生成されます。この 2 番目のフォームには他のコードはありませんが、単にスクリーン ショットで使用する四角形を生成するために使用されます。ここから、取得したスクリーン ショットがクリップ ボードに保存され、スクリーンショット クラスに戻されます。
さて、ここから私が欲しいのは、この撮影した画像を表示するためのコントロール パネルの画像ボックスです。スニッピングツールの仕組みとまったく同じです。ただし、この画像をスクリーン ショット クラスからコントロール パネルに渡すために作成したコードは、イベント ハンドラーが常に null を返すと不平を言っています。
このために私が書いたコードは次のとおりです。
Image img = (Image)bitmap;
if (OnUpdateStatus == null) return;
ProgressEventArgs args = new ProgressEventArgs(img);
OnUpdateStatus(this, args);
if ステートメントをコメントアウトしようとしましたが、OnUpdateStatus の処理で、それが存在しないという例外がスローされます。
今、私のコントロールパネルフォームで、その画像を取得して次のコードで表示しようとしています:
private ScreenCapture _screenCap;
public ControlPanel()
{
InitializeComponent();
_screenCap = new ScreenCapture();
_screenCap.OnUpdateStatus += _screen_CapOnUpdateStatus;
}
private void _screen_CapOnUpdateStatus(object sender, ProgressEventArgs e)
{
imagePreview.Image = e.CapturedImage;
}
これに何時間も費やしましたが、コントロール パネルの画像ボックスに画像が表示されない理由がわかりません。新鮮な目のセットを持っている人は私を助けることができますか? コントロール パネルに保持されているピクチャ ボックスに、取得したスクリーン ショット イメージが表示されないのはなぜですか?