我试图复制屏幕的部分,修改它们,然后将这些部分复制回屏幕。这是在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);这应该将从(100,100)开始的屏幕的100x100部分复制到屏幕的某些随机部分。然而,这是行不通的。我做错了什么?
发布于 2012-04-07 07:57:44
这个代码有几个问题:
CreateCompatibleDC创建了一个新的内存中图像,该图像为1x1像素。这显然不够大,你的100x100块图像。您可能应该使用传递给BitBlt的BitBlt坐标:- top-left cornder of destination (nXDest, nYDest)
- width/height of copy (nWidth,nHeight)
- top-left corner of soruce (nXSrc,nYSrc)按照这个顺序。您似乎混淆了nXSrc/nYSrc和nWidth/nHeight。查查你的号码。
https://stackoverflow.com/questions/10052130
复制相似问题