文档章节

实现许多图片编辑软件都支持的“填充颜色”功能

一贱书生
 一贱书生
发布于 2016/11/23 08:52
字数 315
阅读 43
收藏 0

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

 */

 

 

  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  

© 著作权归作者所有

共有 人打赏支持
一贱书生
粉丝 19
博文 724
码字总数 600123
作品 0
私信 提问
冯德明/GraphicsMagic

#GraphicsMagic 本项目是一个仿PhotoShop的图像处理软件,由来自大连的来自中国大连的一对儿双胞胎兄弟,马晓光、马晓明创作,经他们同意开源,我代为上传至开源中国GIT中,欢迎大家一起参与...

冯德明
2015/01/13
0
0
UI设计师必备的五款界面设计工具

在前几篇文章中,我们分享了一些最受欢迎的原型设计工具,今天我们来谈谈界面设计工具。工具的重要性对于设计师来讲不言而喻。任何想法都需要借助工具来实现。想要成为一名出色的UI设计师,你...

爱原型设计
08/07
0
0
Graphicsgale汉化版下载

Graphicsgale中文版是一款强大、好用的像素画绘制软件,可以用来修饰图片也可以用来画图,很方便。该软件支持很多格式,有.ico, .gif, .avi, .cur, .ani等等,还支持很多种方式导出,可以适应...

wzgreengrass
03/26
0
0
如何正确的从UI图中取色

在移动开发过程中,从UI图上获取颜色是日常开发中常有的事。不过从图片获取颜色也有很多种操作方式,很多人在日常中取到的并不是“正确”的值。 上策:避免从图片中取值 最好的情况就是不需要...

没故事的卓同学
2017/10/30
0
0
幕布:大纲式思维笔记工具

前言 幕布是一款 Outliner 类工具,它以大纲的形式来对资料进行结构化的记录和管理。大纲类的记录形式最显而易见的特征就是 “结构层次分明”、“条理清晰”,并且可扩展性非常强。 使用场景...

己立
2017/12/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

09.ajax局部渲染---《Beetl视频课程》

本期视频实现分类实时获取; 内容简介:使用了局部渲染技术,实现分类的实时获取 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK Beetl满足了更...

Gavin-King
16分钟前
1
0
同步访问共享的可变数据(66)

关键字synchronized 保证同一时刻,只有一个线程执行某一个方法或代码块 当一个对象被一个线程修改时,可以阻止其他线程看到其内部的不一致状态 正确的使用同步可以避免任何对象看到其不一致...

Java搬砖工程师
18分钟前
1
0
银行卡二要素真实性查询

验证用户的银行卡号、持卡人姓名是否真实。 示例代码: private static String host = "https://bank.market.alicloudapi.com";private static String path = "/bank2";private sta...

貔貅叔
22分钟前
1
0
iOS补位动画、沙漏效果、移动UITableViewCell、模拟贪吃蛇、拖拽进度等源码

iOS精选源码 JHAlertView - 一款黑白配色的HUD之沙漏效果 继承UIButton的自定义按钮SPButton 用递归算法实现iOS补位动画 iOS 长按移动UITableViewCell JHLikeButton - 有趣的点赞动画 兼容X...

Android爱开源
32分钟前
1
0
上币至iamToken

https://github.com/consenlabs/token-profile 点击Fork按钮,插入到自己的github项目中 cd /Users/shijun/Desktop/blockChain/iamToken git clone https://github.com/yellmi1983/token-pro......

八戒八戒八戒
35分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部