找茬类辅助工具的编写

发布时间:2025-12-09 21:52:15 浏览次数:4

主要有两个方面:屏幕抓图与贴图和像素比较与重设
若使用GDI,建议使用CImage类,比较方便。
原理很简单:将两幅图抓取下来,按像素比较,相同的设一种色,不同的设另一种色,然后形成新的图,再将此图贴至屏幕即可。
需要做的准备工作是获得两幅图的矩形坐标,这个可以有多种方法。


下面是我写的某个找茬辅助器的部分关键代码:


HDC hdcSrc = ::GetDC(NULL);//int BPP=GetDeviceCaps(hdcSrc,BITSPIXEL);//在我的电脑上BPP=32,这里偷懒了CImage image1,image2;image1.Create(width,height,32);image2.Create(width,height,32);BitBlt(image1.GetDC(),0,0,width,height,hdcSrc,p1.x,p1.y,SRCCOPY);//获取图1BitBlt(image2.GetDC(),0,0,width,height,hdcSrc,p2.x,p2.y,SRCCOPY);//获取图2image1.ReleaseDC();image2.ReleaseDC();/*for(int h=0;h!=height;++h){for(int w=0;w!=width;++w)//相等为黑色,不等为白色image1.SetPixel(w,h,image1.GetPixel(w,h)==image2.GetPixel(w,h) ? RGB(0,0,0) : RGB(255,255,255));//原生的写法速度是相当的慢,主要是SetPixel这个函数效率比较低}*/for(int h=0;h!=height;++h){for(int w=0;w!=width;++w){DWORD *p1=(DWORD *)image1.GetPixelAddress(w,h);DWORD *p2=(DWORD *)image2.GetPixelAddress(w,h);if(*p1!=*p2)//相等白色,不等白色*p1=RGB(0,0,0);else*p1=RGB(255,255,255);}}HDC hdc1=image1.GetDC();for(int i=0;i<m_elapse*200;++i)//重复贴是因为游戏画面也一直在重画{BitBlt(hdcSrc,p1.x,p1.y,width,height,hdc1,0,0,SRCCOPY);Sleep(5);}image1.ReleaseDC();::ReleaseDC(NULL, hdcSrc);

附件:某个找茬类游戏辅助器的源码(VC2010编写)

点击打开链接


需要做网站?需要网络推广?欢迎咨询客户经理 13272073477