我有一些 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;
}
我的问题是我在一个间隔约为 100 毫秒的计时器中使用它。每次截取屏幕截图时,我都会注意到 UI 线程受到影响(移动表单时出现延迟等)。
有没有办法在另一个线程上生成屏幕截图,这样它就不会影响 UI?我读过一些关于的东西BackgroundWorker
,这是要走的路吗?如果有人能在这里指出正确的方向,我将不胜感激。