如何用VC抓取屏幕图象并压缩?

用下面函数可发实现。 

HBITMAP GetScreenBmp()
{
    HWND hwnd 
= ::GetDesktopWindow();
    HDC hsrc 
= ::GetDC(hwnd);
    HDC hmemdc 
= ::CreateCompatibleDC(hsrc);
    RECT rc; ::GetWindowRect(hwnd,
&rc);
    SIZE sz;sz.cx
=rc.right-rc.left;sz.cy=rc.bottom-rc.top;
    HBITMAP hbmp 
= ::CreateCompatibleBitmap(hsrc,sz.cx,sz.cy);
    HGDIOBJ holdbmp 
= ::SelectObject(hmemdc,hbmp);
    ::BitBlt(hmemdc,
0,0,sz.cx,sz.cy,hsrc,rc.left,rc.top,SRCCOPY);
    ::SelectObject(hmemdc,holdbmp);
    ::DeleteObject(hmemdc);
    ::ReleaseDC(hwnd,hsrc);
    
return hbmp;
}
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐