关于屏幕截取

有时候需要将一个补挡住或者隐藏的窗口实时截取出窗口状态

常用的bitblt()

可以将源设备区域像素拷贝到目标区域,而在窗口挡住或者隐藏的情况下就无能为力了

这个时候可以用PrintWindow,不论是窗口被隐藏,或者被挡住都能截出想要的区域

    IntPtr hscrdc = GetWindowDC(hWnd);
              Control control = Control.FromHandle(hWnd);
              IntPtr hbitmap = CreateCompatibleBitmap(hscrdc, control.Width, control.Height);
              IntPtr hmemdc = CreateCompatibleDC(hscrdc);
              SelectObject(hmemdc, hbitmap);
              bool re= PrintWindow(hWnd, hmemdc, 0);
              Bitmap bmp = null;
              if(re)
              {
                 bmp = Bitmap.FromHbitmap(hbitmap);                  
              }

猜你喜欢

转载自www.cnblogs.com/ice-arrow/p/11981046.html