• delphi之找色和色块


    找色和色块,是模拟的重要基础。

    有时候,需要确定某点是否出现某种颜色,有时候需要判断色块是否出现在某位置

    有时候,需要看范围内是否出现色块。

    function IsColor(bmp:TBitmap; x,y:integer; c:TColor):boolean;
    var
      row:pRGBTripArray;
      p:TRGBTriple;
    begin
      row:=bmp.ScanLine[y];
      p:=row[x];
      result:=(p.rgbtBlue=GetBValue(c)) and (p.rgbtGreen=GetGValue(c))
            and (p.rgbtRed=GetRValue(c));
    end;

    function IsColorBlock(bmp:TBitmap; x,y,n:integer; c:TColor):boolean;
    var
      i,j:integer;
    begin
      result:=false;
      for j:=y to y+n-1 do
      begin
        for i:=x to x+n-1 do
        begin
          if not IsColor(bmp, i, j, c) then // 颜色不对就不是色块了
            exit;
         end;
      end;
      result:=true; // 能到这里,该位置就是色块
    end;

    function FindColorBlock(bmp:TBitmap; x1,y1,x2,y2,n:integer;c:TColor):TPoint;
    var
      i,j:integer;
    begin
      for j:=y1 to y2 do
      begin
        for i:=x1 to x2 do
        begin
          if IsColor(bmp, i, j, c) then // 先找色点
          begin
            if IsColorBlock(bmp,i,j,3,c) then // 再判色块
            begin
              result.x:=i;
              result.y:=j;
              exit; // 找到返回
            end;
          end;
        end;
      end;
      result.x:=-1;
      result.y:=-1;
    end;

  • 相关阅读:
    python开发第一篇:初识python
    python开发第二篇 :python基础
    nfs下的exportfs命令和nfs客户端重新挂载
    centos7安装epel源
    vim查找替换
    keepalive基础知识
    nginx基本配置各个参数说明
    centos7下搭建nfs服务
    systemctl命令
    mariadb入门
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/3106274.html
Copyright © 2020-2023  润新知