gpt4 book ai didi

c++ - 只截图窗口的特定区域

转载 作者:行者123 更新时间:2023-11-28 06:29:42 24 4
gpt4 key购买 nike

我目前正在使用以下代码行截取窗口:

UpdateWindow(hwnd);
HDC window_dc = GetDC(hwnd);
HDC res = CreateCompatibleDC(window_dc);
RECT r;
GetClientRect(hwnd, &r);
HBITMAP bmp = CreateCompatibleBitmap(window_dc, r.right - r.left, r.bottom - r.top);
SelectObject(res, bmp);
PrintWindow(hwnd, res, PW_CLIENTONLY);
DeleteObject(bmp);
ReleaseDC(hwnd, window_dc);

现在有没有办法只截取我的 HWND 的特定区域?我意识到,在某些应用程序中,当窗口稍微大一点时,屏幕截图会花费更长的时间。所以我想如果我能够只截取重要的帧,我真的可以提高我的速度。

编辑:它需要为处于后台的窗口工作,例如。被其他窗口重叠。

最佳答案

你可以这样试试:

bool ScreenShot(HWND hwnd, int x, int y, int w, int h, LPCSTR file){
HDC source = GetDC(hwnd);
HDC memory = CreateCompatibleDC(source);

HBITMAP bitmap = CreateCompatibleBitmap(source, w, h);
HBITMAP bitmapOld = (HBITMAP)SelectObject(memory, hBitmap);

BitBlt(memory, 0, 0, w, h, source, x, y, SRCCOPY);
hBitmap = (HBITMAP)SelectObject(memory, bitmapOld);

DeleteDC(source);
DeleteDC(memory);

HPALETTE pal = NULL;
if(saveBitmap(file, bitmap, pal)) return true;
return false;
}

关于c++ - 只截图窗口的特定区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27837364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com