- 注册时间
 - 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;
 
 - }
 
 
  复制代码 |   
 
 
 
 |