谁给个java的颜色填充算法

socialchen 2012-06-19 07:57:21
就是仿Windows的颜色填充的算法
...全文
206 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2012-06-19
  • 打赏
  • 举报
回复
直接要现成代码恐怕没空给你写,大致如下:

// 入口
public void fill(BufferedImage img, int x, int y, int newRGB) {
int oldRGB = img.getRGB(x, y);
if (oldRGB != newRGB) fill(img, x, y, oldRGB, newRGB);
}

// 递归函数
private void fill(BufferedImage img, int x, int y, int oldRGB, int newRGB) {
// 1、检查本点是否为oc,不是则直接return;
if (img.getRGB(x, y) != oldRGB) return;
// 2、将本点填充为nc;
img.setRGB(x, y, newRGB);
// 3、依次遍历上下左右4个点,并递归调用本函数;
// 上
if (y>0) fill(img, x, y-1, oldRGB, newRGB);
// 下
... 略
}
socialchen 2012-06-19
  • 打赏
  • 举报
回复
高手还在不在了


[Quote=引用 1 楼 的回复:]

填色算法,是个貌似简单,但要高效率则很有难度的问题。

最土的算法,可以用递归的方式,以某点出发逐点扫描。

设填充点的颜色为 oc,填充颜色为 nc,那么:
public void fill(x, y, oc, nc) {
1、检查本点是否为oc,不是则直接return;
2、将本点填充为nc;
3、依次遍历上下左右4个点,并递归调用本函数;
}

这方法最简……
[/Quote]
socialchen 2012-06-19
  • 打赏
  • 举报
回复
额、、、刚刚论坛维护了,就写着这把,谢谢了

能不能帮我写个简单的填充算法,慢点无所谓,现在急用。有点针对性,所以自己写不出来。
我的画图程序画板是定义了一个JPanel,然后定义了一个BufferedImage类型的缓冲图片bufferedImage,我画图都是画在bufferedImage上,然后repaint的时候才画到画板上。 我找了好多填充算法都是直接填充在JPanel画板上的。能帮我写个简单的适合我这的么
MiceRice 2012-06-19
  • 打赏
  • 举报
回复
填色算法,是个貌似简单,但要高效率则很有难度的问题。

最土的算法,可以用递归的方式,以某点出发逐点扫描。

设填充点的颜色为 oc,填充颜色为 nc,那么:
public void fill(x, y, oc, nc) {
1、检查本点是否为oc,不是则直接return;
2、将本点填充为nc;
3、依次遍历上下左右4个点,并递归调用本函数;
}

这方法最简单最土速度最慢。

顺便给你找个稍微复杂一点点的:
http://dev.10086.cn/cmdn/bbs/thread-11898-1-1.html

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧