找图的功能用C或C++的实现方法
用c++可以用GetPixel这个API来找图片,基本流程是匹配图片上的每一个点和屏幕上的每一个点,可是这样的效率不高,不过一定可以得出结果是否找到。另如“暗雪飞龙”所说,bmp图片解析是比较简单的,其他图片格式需要复杂一点的操作~~~
下面是一个简单的示例,方法比较笨,不过胜在有效,在vc6中编译通过~~~
bool FindPic(CString FileName)
{
CString result = "";
CBitmap bmp;
BITMAP bm;
HBITMAPhBmp;
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;
}
页:
[1]