今天把完美日志更新一下打算早点睡觉的.
       被朋友拉着玩了一下QQ找茬..高手大有人在啊..很是悲惨..
  
       朋友痛恨的说.不行,要找外挂玩玩..百度一下,也还有不少..对于一个对辅助略有心得本人深深的感到要发挥一把.于是唰唰唰开工.

      首先分析一下原理和实现步骤.

[b]原理:[/b]

通过上图可以发现,左右为2张同等大小的图片.所谓找茬就是找出图片中的不同地方.
这2张图片是经过PS的图片.

既然是2张同样大小的图片,那样就好办了.可以通过扫描图片点阵获得RGB值.对比2张图片的RGB.其中相同的RGB值肯定是相同区域.不同的RGB值那肯定就是被PS过的2张图片的差距了.

[b]实现步骤:[/b]
1:因为是测试,所以这里采用简单的办法,手工定位游戏出来的位置.

2:打开VS2008(vc 6.0 vs2003 vs2005操作步均可).
   新建一个对话框工程.
   设置如下界面:

3:双击按钮写入写入如下代码:

代码如下:

CWnd *pWnd = GetDesktopWindow();    
CDC *dc = pWnd->GetWindowDC(); //获取屏幕DC
CDC *PictureDc = GetDlgItem(IDC_PICTURE_SHOW)->GetDC(); //获取picture control DC
COLORREF PointRGB1;
COLORREF PointRGB2;

for (int i = 160; i < 380 + 160; i++) //横向遍历
{
for (int j = 200; j < 285 + 200; j++) //纵向遍历
{

PointRGB1 = dc->GetPixel(i,j); //获得第一张图片i,y所在点的RGB值
PointRGB2 = dc->GetPixel(i + 393,j); //获取第二张图片(393 + i),y所在点的RGB值
if (PointRGB1 != PointRGB2) //如果2个对应点的RGB值不相等,说明图片被PS过
{
PictureDc->SetPixelV(i - 160,j - 200,PointRGB1);//在picture control内绘出颜色
}
}
}

ReleaseDC(PictureDc); //释放picture control DC句柄
ReleaseDC(dc); //释放屏幕DC 句柄

下面是演示:

[b]总结:[/b]
    以上代码仅仅完成屏幕扫描颜色.扫描的过程有点慢.此代码仅仅为学习演示,以后有时间我会继续完善.
完善内容包括:
   1:自动确定游戏需要扫描图片的位置.
   2:扫描出结果自动按键.
   3:优化扫描速度.

同时也希望大家能够提出意见和看法

 

 

 

来自于:  http://hi.baidu.com/watsy/blog/item/9afe9eca3b3aa88cc81768ba.html