在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
找色和色块,是模拟的重要基础。 有时候,需要确定某点是否出现某种颜色,有时候需要判断色块是否出现在某位置 有时候,需要看范围内是否出现色块。
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;
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论