C# の経験はありますが、WinForms は初めてです。
スクリーンショットを次のように取得するメソッドがありますBitMap
。
public Bitmap GetSreenshot()
{
Rectangle bounds = Screen.PrimaryScreen.Bounds;
Bitmap bmp = new Bitmap(bounds.Width, bounds.Height,
PixelFormat.Format32bppArgb);
Graphics gfx = Graphics.FromImage(bmp);
gfx.CopyFromScreen(bounds.X,
bounds.Y,
0,
0,
bounds.Size,
CopyPixelOperation.SourceCopy);
return bmp;
}
私の問題は、これを 100ms 間隔のタイマーで使用していることです。スクリーンショットを撮るたびに、UI スレッドが影響を受けていることがわかります (フォームを移動するときのラグなど)。
UI に影響を与えないように、別のスレッドでスクリーンショットを生成する方法はありますか? について何か読んだことがBackgroundWorker
ありますが、それでよろしいですか?ここで誰かが私を正しい方向に向けることができれば幸いです。