zoukankan      html  css  js  c++  java
  • 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]windows截图
    [python]PyPI使用国内源
    [MySQL]配置多个MySQL服务(Windows)
    [C#]中获取当前程序运行路径的方法
    [C#]统计文本文件txt中的行数(快速读取)
    [C#]获取连接MySql数据库及常用的CRUD操作
    html和css高级
    html和css进阶
    html和css入门
    Git 简介
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/3106274.html
Copyright © 2011-2022 走看看