- 注册时间
- 2021-4-16
- 最后登录
- 2024-3-15
- 在线时间
- 3 小时
编程入门
- 龙马币
- 54
|
用c++可以用GetPixel这个API来找图片,基本流程是匹配图片上的每一个点和屏幕上的每一个点,可是这样的效率不高,不过一定可以得出结果是否找到。
另如“暗雪飞龙”所说,bmp图片解析是比较简单的,其他图片格式需要复杂一点的操作~~~
下面是一个简单的示例,方法比较笨,不过胜在有效,在vc6中编译通过~~~
- bool FindPic(CString FileName)
- {
- CString result = "";
- CBitmap bmp;
- BITMAP bm;
- HBITMAP hBmp;
- CDC bmpDC;
- hBmp = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),FileName,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
- bmp.DeleteObject();
- bmp.Attach( hBmp );
- bmp.GetObject(sizeof(BITMAP),&bm);
- bmpDC.CreateCompatibleDC(NULL);
- bmpDC.SelectObject(&bmp); //图片DC
- HDC hScreenDC = ::GetDC(NULL); //屏幕DC
- bool found = false;//是否匹配到
- bool next = false;//是否找下一个点
- for (int i = 0;i<1280 && !found;i++)
- {
- for (int j = 0 ; j<1024 && !found;j++)
- {
- next = false;
- for (int a = 0;a<30 && !next;a++)
- {
- for (int b = 0;b<30&&!next;b++)
- {
- if(GetPixel(hScreenDC,i+a,j+b) != bmpDC.GetPixel(a, b))
- {
- next = true;//找屏幕中下一个点
- }
- }
- }
- if (!next)//找到点
- {
- found = true;
- result.Format("(%d,%d)",i,j);
- return true;
- break;
- }
- }
- }
- return false;
- }
复制代码 |
|