• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

delphi之找色和色块

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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

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

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:=to y+n-1 do
  
begin
    
for i:=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;

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
SVM简单代码实现MATLAB发布时间:2022-07-18
下一篇:
Linux中Matlab安装总结 - dpc525发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap