如何比较屏幕(dc)区域 跟文件(bmp)中相同大小区域 第一个正确答案100分全给
最好用api不用MFC
问题点数:100、回复次数:7Top
1 楼casinosun(去日苦多)回复于 2005-08-03 15:58:44 得分 0
异或Top
2 楼dandycheung(珠穆朗玛)回复于 2005-08-03 16:02:44 得分 0
说得再详细些。Top
3 楼kingbin(co)回复于 2005-08-03 16:03:40 得分 0
兄弟我不熟HBITMAP怎么用
能给出个简单dc->BITBMP bmpfile->BITBMP过程用那些API
line to line的比较还是pixel to pixel
能否降低 bit/pixel 比较提高效率Top
4 楼goodboyws(深夜不眠者(VCMVP))回复于 2005-08-03 17:12:02 得分 0
dc->BITBMP
GetCurrentObject(hdc, OBJ_BITMAP);
bmpfile->BITBMP
::LoadImage(NULL, lpszPath,IMAGE_BITMAP,
0, 0, LR_LOADFROMFILE |
LR_CREATEDIBSECTION);
简单的做法
CreateCompatibleDC创建一个内存DC
SelectObject(hMemDC, hBitmap);
对两个DC分别调用GetPixel进行比较Top
5 楼kingbin(co)回复于 2005-08-03 18:05:25 得分 0
to goodboyws(深夜不眠者)
你就是我的偶像,不过这个方法要不停的调用GetPixel 函数调用会不会降低效率。有没有方法把dc,bmp都转化为内存里面的数组或比特流(是不是bmbits,可是怎么让这两个在数组里面颜色表相同),然后比较两个数组。Top
6 楼goodboyws(深夜不眠者(VCMVP))回复于 2005-08-04 10:31:17 得分 100
这样是否可以??
HBITMAP hBmp = (HBITMAP)GetCurrentObject(hdc, OBJ_BITMAP);
BITMAP bm;
GetObject(hBmp, sizeof(bm), &bm);
HBITMAP hBmpFile = ::LoadImage(NULL, lpszPath,IMAGE_BITMAP,
0, 0, LR_LOADFROMFILE |
LR_CREATEDIBSECTION);
BITMAP bmFile;
GetObject(hBmpFile , sizeof(bmFile), &bmFile);
BITMAPINFOHEADER bmi;
bmi.biSize = sizeof(BITMAPINFOHEADER);
bmi.biWidth = bmFile.bmWidth;
bmi.biHeight = bmFile.bmHeight;
bmi.biPlanes = 1;
bmi.biBitCount = bm.bmPlanes * bm.bmBitsPixel;
if (bmi.biBitCount <= 1)
bmi.biBitCount = 1;
else if (bmi.biBitCount <= 4)
bmi.biBitCount = 4;
else if (bmi.biBitCount <= 8)
bmi.biBitCount = 8;
else
bmi.biBitCount = 24;
bmi.biCompression = BI_RGB;
bmi.biSizeImage = 0;
bmi.biXPelsPerMeter = 0;
bmi.biYPelsPerMeter = 0;
bmi.biClrUsed = 0;
bmi.biClrImportant = 0;
int nNumColors;
if (biBitCount < 24)
nNumColors = 1 << biBitCount;
LPBYTE* pbi = new BYTE[sizeof(BITMAPINFOHEADER)+nNumColors *sizeof(RGBQUAD));
memcpy(pbi, &bmi, sizeof(BITMAPINFOHEADER);
LPBYTE* lpvBits = new BYTE[((((bmi.biWidth * bmi.biBitCount) + 31) & ~31) >> 3) * bmi.biHeight];
GetDIBits(hdc, hBmpFile, 0, bmi.biHeight, lpvBits, pbi, DIB_RGB_COLORS);
然后用lpvBits和bm.bmBits比较就OK了
Top
7 楼bobob(静思)回复于 2005-08-04 11:29:20 得分 0
把两个dc按照异或画到一起Top




