我正在尝试复制部分屏幕,修改它们,然后将这些部分复制回屏幕。这是在Windows中,使用C ++。
我的代码的一般结构如下所示:
HDC hdcDesktop = GetDC(NULL);
HDC hdcTemp = CreateCompatibleDC(hdcDesktop);
BitBlt(hdcTemp, 0, 0, 100, 100, hdcDesktop, 100, 100, SRCCOPY);
BitBlt(hdcDesktop, rand() % 1920, rand() % 1080, 100, 100, hdcTemp, 0, 0, SRCCOPY);
此应将屏幕的100x100部分从(100,100)开始复制到屏幕的某个随机部分。但是,这不起作用。我做错了什么?
答案 0 :(得分:1)
此代码存在一些问题:
如文档所示,CreateCompatibleDC
会创建一个1x1像素的新内存中图像。对于你的100x100大小的图像来说,这显然不够大。您应该使用CreateCompatibleBitmap
。
传递给BitBlt的坐标是:
按此顺序。您似乎将nXSrc / nYSrc与nWidth / nHeight混淆。检查你的号码。
像这样肆意滥用桌面可能实际上(1)被禁止,(2)产生意外结果。小心你想要达到的目标。