实现许多图片编辑软件都支持的“填充颜色”功能
实现许多图片编辑软件都支持的“填充颜色”功能
一贱书生 发表于1年前
实现许多图片编辑软件都支持的“填充颜色”功能
  • 发表于 1年前
  • 阅读 41
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

/**
 * 功能:实现许多图片编辑软件都支持的“填充颜色”功能。
 * 给定一个屏幕(以二维数组表示,元素为颜色值)、一个点和一个新的颜色值,将新颜色填入这个店的周围区域,知道原来的颜色值全都改变。

 */

 

 

  1. /** 
  2.  * 思路:假设要对一个像素(比如红色)调用paintFill,即对周围的像素逐一调用paintFill, 
  3.  * 向外扩张,一旦碰到非红色的像素就停止填充。 
  4.  *  
  5.  * 注意:碰到图像问题,要注意screen[y][x]中x和y的顺序。x表示水平轴(即自左向右),实际上对应于列数,而非行数。y的值等于行数。 
  6.  * @param screen 
  7.  * @param x 
  8.  * @param y 
  9.  * @param ncolor 
  10.  * @return 
  11.  */  
  12. public static boolean paintFill(Color[][] screen,int x,int y,Color ncolor){  
  13.     if(screen[y][x]==ncolor)  
  14.         return false;  
  15.     return paintFill(screen, x, y, screen[y][x], ncolor);  
  16. }  
  17.   
  18. public static boolean paintFill(Color[][] screen,int x,int y,Color ocolor,Color ncolor){  
  19.     if(x<0||x>=screen[0].length||y<0||y>=screen.length)  
  20.         return false;  
  21.       
  22.     if(screen[y][x]==ocolor){  
  23.         screen[y][x]=ncolor;  
  24.         paintFill(screen, x-1, y, ocolor, ncolor);//左  
  25.         paintFill(screen, x+1, y, ocolor, ncolor);//右  
  26.         paintFill(screen, x, y-1, ocolor, ncolor);//上!!!  
  27.         paintFill(screen, x, y+1, ocolor, ncolor);//下!!!  
  28.     }  
  29.     return true;  
  30. }  

 

[java] view plain copy

 

  1. enum Color{  
  2.     Black,White,Red,Yellow,Green  
共有 人打赏支持
粉丝 15
博文 722
码字总数 600072
×
一贱书生
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: