DWORD FindColor(LPVOID lParam)
{
HDC hDCscreen = GetDC(NULL);
int nWidth = 20,nHeight = 20;
BYTE R,G,B;
HDC hComDC = CreateCompatibleDC(hDCscreen);
BITMAPINFO bmpInfo;
HBITMAP hComBitMap = CreateCompatibleBitmap(hDCscreen,nWidth,nHeight);
HGDIOBJ OldHgdobj = SelectObject(hComDC,hComBitMap);
BitBlt(hComDC,0,0,nWidth,nHeight,hDCscreen,0,0,SRCCOPY);
HANDLE hHeap = GetProcessHeap();
LPVOID lpBuffer = HeapAlloc(hHeap,HEAP_ZERO_MEMORY,nHeight*nWidth*4);
ZeroMemory(&bmpInfo,sizeof(bmpInfo));
bmpInfo.bmiHeader.biBitCount = 32;
bmpInfo.bmiHeader.biCompression = BI_RGB;
bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmpInfo.bmiHeader.biWidth = nWidth;
bmpInfo.bmiHeader.biHeight = nHeight;
bmpInfo.bmiHeader.biPlanes = 1;
bmpInfo.bmiHeader.biSizeImage = 0;
DWORD Color = NULL,a=0; printf("被扫描行数%d\n",GetDIBits(hComDC,hComBitMap,0,bmpInfo.bmiHeader.biHeight,lpBuffer,&bmpInfo,DIB_RGB_COLORS));
for (int h = nHeight;h >= 0;h--)
{
for(int w = 0; w<nWidth ; w++)
{
/*RGB GBR*/
memcpy(&Color,LPVOID((int)lpBuffer + h * w * 4 + 1),3);//32位色最高字节表示Alpha?
printf("坐标 - X:%d Y:%d 颜色:%X\n",w, h,Color);
SetPixel(hDCscreen,w,h,Color);//设置目标区域的颜色,结果目标区域模糊 设置目标区域的颜色,结果目标区域模糊!我想大家帮忙修改我的函数 让目标区域不会乱
}
}
HeapFree(hHeap,HEAP_NO_SERIALIZE,lpBuffer);
ReleaseDC(NULL,hDCscreen);
ReleaseDC(NULL,hComDC);
DeleteObject(OldHgdobj);
DeleteObject(hComBitMap);
return FALSE;
}
{
HDC hDCscreen = GetDC(NULL);
int nWidth = 20,nHeight = 20;
BYTE R,G,B;
HDC hComDC = CreateCompatibleDC(hDCscreen);
BITMAPINFO bmpInfo;
HBITMAP hComBitMap = CreateCompatibleBitmap(hDCscreen,nWidth,nHeight);
HGDIOBJ OldHgdobj = SelectObject(hComDC,hComBitMap);
BitBlt(hComDC,0,0,nWidth,nHeight,hDCscreen,0,0,SRCCOPY);
HANDLE hHeap = GetProcessHeap();
LPVOID lpBuffer = HeapAlloc(hHeap,HEAP_ZERO_MEMORY,nHeight*nWidth*4);
ZeroMemory(&bmpInfo,sizeof(bmpInfo));
bmpInfo.bmiHeader.biBitCount = 32;
bmpInfo.bmiHeader.biCompression = BI_RGB;
bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmpInfo.bmiHeader.biWidth = nWidth;
bmpInfo.bmiHeader.biHeight = nHeight;
bmpInfo.bmiHeader.biPlanes = 1;
bmpInfo.bmiHeader.biSizeImage = 0;
DWORD Color = NULL,a=0; printf("被扫描行数%d\n",GetDIBits(hComDC,hComBitMap,0,bmpInfo.bmiHeader.biHeight,lpBuffer,&bmpInfo,DIB_RGB_COLORS));
for (int h = nHeight;h >= 0;h--)
{
for(int w = 0; w<nWidth ; w++)
{
/*RGB GBR*/
memcpy(&Color,LPVOID((int)lpBuffer + h * w * 4 + 1),3);//32位色最高字节表示Alpha?
printf("坐标 - X:%d Y:%d 颜色:%X\n",w, h,Color);
SetPixel(hDCscreen,w,h,Color);//设置目标区域的颜色,结果目标区域模糊 设置目标区域的颜色,结果目标区域模糊!我想大家帮忙修改我的函数 让目标区域不会乱
}
}
HeapFree(hHeap,HEAP_NO_SERIALIZE,lpBuffer);
ReleaseDC(NULL,hDCscreen);
ReleaseDC(NULL,hComDC);
DeleteObject(OldHgdobj);
DeleteObject(hComBitMap);
return FALSE;
}
解决方案 »
- socket程序中因网速太慢所引发的问题
- EN_UPDATE问题
- WSAEventSelect模型的socket,怎么在接收数据事件中判断收到的数据数量?
- error C2558: class 'CStringList' : no copy constructor available
- listcontrol 的简单问题
- 后学末进求助:CEdit.GetWindowText(szStrTmp)问题!谢谢!
- 我调用DrawText函数时,输出10个a和10个空间占的宽度不一样,这个问题怎么解决?
- 关于file hook的问题
- EditBox为什么滚动不了?(快,很简单的)
- 有关非模态窗口的问题,望高手指点迷津!!
- CListCtrl 重绘后无法显示图标(使用DrawItem)
- CFtpConnection::PutFile()的问题
memcpy(&Color,LPVOID((BYTE*)lpBuffer + h * w * 4),4);
{
HDC hDCscreen = GetDC(NULL);
int nWidth = 20,nHeight = 20;
BYTE R,G,B;
HDC hComDC = CreateCompatibleDC(hDCscreen);
BITMAPINFO bmpInfo;
HBITMAP hComBitMap = CreateCompatibleBitmap(hDCscreen,nWidth,nHeight);
HGDIOBJ OldHgdobj = SelectObject(hComDC,hComBitMap);
BitBlt(hComDC,0,0,nWidth,nHeight,hDCscreen,0,0,SRCCOPY);
HANDLE hHeap = GetProcessHeap();
LPVOID lpBuffer = HeapAlloc(hHeap,HEAP_ZERO_MEMORY,nHeight*nWidth*4);
ZeroMemory(&bmpInfo,sizeof(bmpInfo));
bmpInfo.bmiHeader.biBitCount = 32;
bmpInfo.bmiHeader.biCompression = BI_RGB;
bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmpInfo.bmiHeader.biWidth = nWidth;
bmpInfo.bmiHeader.biHeight = nHeight;
bmpInfo.bmiHeader.biPlanes = 1;
bmpInfo.bmiHeader.biSizeImage = 0;
RGBQUAD Color ;
printf("被扫描行数%d\n",GetDIBits(hComDC,hComBitMap,0,bmpInfo.bmiHeader.biHeight,lpBuffer,&bmpInfo,DIB_RGB_COLORS));
for (int h = nHeight-1;h >= 0;--h)
{
for(int w = 0; w<nWidth ; ++w)
{
/*RGB GBR*/
memcpy(&Color,LPVOID((RGBQUAD*)lpBuffer + (nWidth*h + w)),3);//32位色最高字节表示Alpha?
printf("坐标 - X:%d Y:%d 颜色:RGB(%02X,%02X,%02X)\n",w,nHeight-1-h,Color.rgbRed,Color.rgbGreen,Color.rgbBlue);
SetPixel(hDCscreen,w,nHeight-1-h,RGB(Color.rgbRed,Color.rgbGreen,Color.rgbBlue));
//设置目标区域的颜色,结果目标区域模糊 设置目标区域的颜色,结果目标区域模糊!我想大家帮忙修改我的函数 让目标区域不会乱
}
}
HeapFree(hHeap,HEAP_NO_SERIALIZE,lpBuffer);
ReleaseDC(NULL,hDCscreen);
ReleaseDC(NULL,hComDC);
DeleteObject(OldHgdobj);
DeleteObject(hComBitMap);
return FALSE;
}