我写了一个小程序,扫描屏幕上的某种颜色。我在捕捉屏幕方面遇到了问题。它工作了一段时间但最终崩溃了:this message。我尝试将变量从局部更改为全局但我得到了同样的错误。这是我的方法:
static IntPtr hSrcDc;
static IntPtr hDc;
static Bitmap screenCopy;
static Bitmap Capture(Rectangle r)
{
screenCopy = new Bitmap(r.Width, r.Height, PixelFormat.Format24bppRgb);
using (Graphics gdest = Graphics.FromImage(screenCopy))
{
using (Graphics gsrc = Graphics.FromHwnd(IntPtr.Zero))
{
hSrcDc = gsrc.GetHdc();
hDc = gdest.GetHdc();
BitBlt(hDc, 0, 0, r.Width, r.Height, hSrcDc, r.X, r.Y, (int)CopyPixelOperation.SourceCopy);
gdest.ReleaseHdc();
gsrc.ReleaseHdc();
}
}
return screenCopy;
}