我的 C# 应用程序需要能够捕获特定窗口的位图,无论该窗口是否在顶部。我用 PrintWindow 做到这一点(感谢其他 stackoverflow 答案),它基本上就是这样做的......
...
[DllImport("user32.dll")]
public static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags);
....
Bitmap thisScreenshot = new Bitmap(Width, Height);
Graphics gfxScreenshot = Graphics.FromImage(thisScreenshot);
IntPtr hdcBitmap = gfxScreenshot.GetHdc();
PrintWindow(stickyProgHandle, hdcBitmap, 0);
gfxScreenshot.ReleaseHdc(hdcBitmap);
...
我现在遇到的唯一问题是每次调用 PrintWindow 时,我正在捕获的窗口都会闪烁(例如刷新该窗口)。假设 PrintWindow 实际上是我的最佳选择,我怎样才能摆脱闪烁?
UPDATE1:请注意,闪烁出现在我正在抓取屏幕截图的窗口中,而不是我的应用程序窗口中。