delphi的一个ScanLine内存找子图的函数,不知道有没有问题。

function TForm1.findimg(pBmpMain,pBmpSub: TBitmap) :Boolean;
var
Pmain,psub,ptmp: PByteArray;
x,y,z:Integer;
b: boolean;
begin
    result:=false;
    b:=false;
    for y:=0 to pBmpMain.Height-pBmpSub.Height do
    begin
    Pmain := pBmpMain.ScanLine[y];
    psub := pBmpSub.ScanLine[0];
        for x:=0 to pBmpMain.Width-pBmpSub.Width do
        begin
            b:=CompareMem(@Pmain[x*3],psub,sizeof(@psub));
            if  b then  begin
              for z := 0 to pBmpSub.Height - 1 do begin
                Pmain := pBmpMain.ScanLine[y+z];
                psub := pBmpSub.ScanLine[z];
                b:=CompareMem(@Pmain[x*3],psub,pBmpSub.Width * 3);
                if not b then break;
              end;
                if b then Break;
            end;
            if b then break;
        end;
        if b then break;
    end;
    result:=b;
end;
时间: 2024-08-08 14:13:45

delphi的一个ScanLine内存找子图的函数,不知道有没有问题。的相关文章

一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入内存

Top K 算法详解应用场景: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节.        假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个.一个查询串的重复度越高,说明查询它的用户越多,也就是越热门.),请你统计最热门的10个查询串,要求使用的内存不能超过1G. 必备知识:什么是哈希表?        哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进

给出两个单词(start和end)与一个字典,找出从start到end的最短转换序列

问题 给出两个单词(start和end)与一个字典,找出从start到end的最短转换序列.规则如下: 一次只能改变一个字母 中间单词必须在字典里存在 例如: 给出 start = "hit"end = "cog"dict = ["hot","dot","dog","lot","log"] 返回 [ ["hit","hot",&

一个php小白找工作的历程

一个php小白找工作的历程其实对新工作还是有点忐忑的,对于我这样一个有着特殊工作经历的来说更是如此.为了更好的迎接未来,不得不总结下过去.在经历一段时间的职业生涯探索期后,还是觉得自己更适合做程序员这个行业,因为也不会其他的了.在仔细的权衡之后,毅然决然的选择从JAVA转向php,这是一个艰难的决定,同时也很大胆,因为php完全是一个陌生的领域,自己要重新开始归零学习.所以,首先自己调整好了心态,开始准备一场艰苦的持久战.先是找网上淘了一些视频,开始选择相关的视频.经过选择之后,我决定从张恩民老

ZeroMQ接口函数之 :zmq_send_const – 从一个socket上发送一个固定内存数据

ZeroMQ API 目录 :http://www.cnblogs.com/fengbohello/p/4230135.html ————————————————————————————————————— ZeroMQ 官方地址:http://api.zeromq.org/4-1:zmq-send-const zmq_send_const(3)           ØMQ Manual - ØMQ/4.1.0 Name zmq_send_const – 从一个socket上发送一个固定内存数据

C++ Primer 学习笔记_29_操作符重载与转换(4)--转换构造函数和类型转换运算符归纳、operator new 和 operator delete 实现一个简单内存泄漏跟踪器

C++ Primer 学习笔记_29_操作符重载与转换(4)--转换构造函数和类型转换运算符归纳.operator new 和 operator delete 实现一个简单内存泄漏跟踪器 一.转换构造函数 可以用单个实参来调用的构造函数定义从形参类型到该类型的一个隐式转换.如下: class Integral { public: Integral (int = 0); //转换构造函数 private: int real; }; Integral A = 1; //调用转换构造函数将1转换为In

易语言怎样写双线程?一个线程循环找图。一个线程循环按键F2。

易语言怎样写双线程? 一个线程循环找图.一个线程循环按键F2. // .程序集变量 参数, 整数型 .程序集变量 线程句柄1, 整数型 .程序集变量 线程句柄2, 整数型 启动线程 (&子程序1, 参数,线程句柄1) 启动线程 (&子程序2, ,线程句柄2) // .子程序 子程序1 .参数 参数1, 整数型 信息框 (参数1, 0, ) 信息框 (“这是线程1的例子”, 0, ) // .子程序 子程序2 信息框 (“这是线程2的例子”, 0, ) // // 注意: 凡调用到COM接口

axure 实现的一个简易的找茬小游戏

好吧,今天早上用了一早的时间,就是实现一个看图找不同的小游戏.到下课,才把基本情况弄好! 首页不用多说,大家都会,只需要一个简单的链接. 在关卡中,各个关卡都大致相同,我就以第一关为例简要说明一下: 1.时间 限定时间为120秒,就需要一个计时器,用动态面板实现它.新建动态面板,设置两个状态,载入页面时,默认为状态1,转换为状态2.在“动态面板状态改变时”一栏中,设置一下三个用例:     判断语句中的状态切换达到计时器效果,而元件文字框的判断是为了在时间到了的时候,给出如上图2的提示.“时间到

剑指offer系列——二维数组中,每行从左到右递增,每列从上到下递增,设计一个算法,找其中的一个数

题目:二维数组中,每行从左到右递增,每列从上到下递增,设计一个算法,找其中的一个数 分析: 二维数组这里把它看作一个矩形结构,如图所示: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 在做这道题的时候我最先考虑的是每次比较对角线上的元素可能可以取得较好的效果, 以查找9为例, 从1(0,0)开始,1<10,可以得出结论,10在1的右侧或下侧: 1 2 8 9 2 4 9 12 4 7 10 13 6 8 11 15 然后看4(1,1),4<9, 1 2 8 9 2

hdu1298 T9(手机输入法,每按一个数字,找出出现频率最高的字串,字典树+DFS)

Problem Description A while ago it was quite cumbersome to create a message for the Short Message Service (SMS) on a mobile phone. This was because you only have nine keys and the alphabet has more than nine letters, so most characters could only be